这是html中的代码,它提供了href,我想通过java中的链接下载kml文件。我不知道如何通过这些代码获取kml文件来点击并保存文件。
HTML:
<div class="section tab" style="display:block;" >
<ul>
<li>
<a href="/trip/27887/download/?fileformat=gpx" class="trip_download_bg trip_down_icon">GPX格式文件下载</a>
<div class="trip_down_content">
<div class="trip_down_content_part_1">需要银两:3</div>
<label class="trip_down_content_part_2">内容介绍:</label>
<p class="trip_down_p">
GPX格式轨迹文件是GPS数据文件通用格式,目前市面上大部分GPS设备都支持导出GPX文件格式。此文件是将作者原GPS轨迹文件经过格式转换和标准化后自动生成。
</p>
<div class="cleanFix"></div>
</div>
<div class="cleanFix"></div>
</li>
<li>
<a href="/trip/27887/download/?fileformat=kml" class="trip_download_bg trip_down_icon" id="kml_icon">KML格式文件下载</a>
<div class="trip_down_content">
<div class="trip_down_content_part_1">需要银两:3</div>
<label class="trip_down_content_part_2">内容介绍:</label>
<p class="trip_down_p">
KML格式轨迹文件是用于GoogleEarth客户端显示GPS轨迹路线和航点信息的文件格式。此文件是将作者原GPS轨迹文件经过格式转换和标准化后自动生成。
</p>
<div class="cleanFix"></div>
</div>
<div class="cleanFix"></div>
</li>
如何使用Java单击链接并保存KML文件?
<a href="/trip/27887/download/?fileformat=kml" class="trip_download_bg trip_down_icon" id="kml_icon">KML格式文件下载</a>
Java代码:
List<HtmlElement> nlink = downloadPage.getElementsByIdAndOrName("kml_icon");
for(int k=0;k<nlink.size();k++) {
String templink = nlink.get(k).getAttribute("href");
if(templink.contains("fileformat=kml")) {
System.out.println("href====>"+templink);
downloadPage.getAnchorByHref(templink);
//InputStream is = templink.click().getWebResponse().getContentAsStream();
}
}
答案 0 :(得分:0)
使用此过程应该更容易:
Page kmlPage = null;
for (HtmlAnchor a : downloadPage.getAnchors()) {
if (a.getHrefAttribute().contains("trip/27887/download/?fileformat=kml")) {
String url = a.getHrefAttribute();
if (!url.startsWith("http")) {
url = "http://www.hostname.com" + url;
}
kmlPage = client.getPage(url);
// you can also do it it simplier if this below works
// kmlPage = a.click();
}
}
String contentType = kmlPage.getWebResponse().getContentType();
if (contentType.contains("kml")) {
InputStream kmlStream = factPage.getWebResponse().getContentAsStream();
}