当使用JSOUP来解析这个html文档时,我完全迷失了......
我不是故意要求直接编写代码,但如果有人有时间或者可以让我开始那将会很棒......
这是文件: http://radar.weather.gov/ridge/RadarImg/N0R/ILN/
如果你查看源我试图获取这些行:
<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="ILN_20140112_0021_N0R.gif">ILN_20140112_0021_N0R.gif</a></td><td align="right">12-Jan-2014 00:23 </td><td align="right">2.2K</td><td> </td></tr>
正如您所注意到的那样......我需要
中的值<a href=
我还需要前10行中的那个值......
正如我所说,如果有人有时间帮助我,我们将不胜感激!
答案 0 :(得分:2)
首先,您需要将HTML的内容存储到文档中(更多地解释here):
String url = "http://radar.weather.gov/ridge/RadarImg/N0R/ILN/";
Document doc = Jsoup.connect(url).get();
接下来,从文档中选择所需的元素(请参阅here)。在以下行中,它将选择包含字符串<a>
的{{1}}属性的所有href
元素:
"gif"
然后打印出前十个的值,你可以使用一个循环。 Elements links = doc.select("a[href]:contains(gif)");
方法允许您仅提取特定属性的值,而不是完整的HTML或其文本:
attr()
输出结果为:
for (int i=0;i<10;i++) {
System.out.println(links.get(i).attr("href"));
}
这基本上是您在Jsoup中进行的大部分解析的基本方法。您应该从页面中提取一些其他元素(使用this page作为参考)。
答案 1 :(得分:0)
试试这个
String TestUrl = "<tr><td><img src='/icons/image2.gif' alt='[IMG]'></td><td><a href='ILN_20140112_0021_N0R.gif'>ILN_20140112_0021_N0R.gif</a></td><td align='right'>12-Jan-2014 00:23</td><td align='right'>2.2K</td><td> </td></tr>";
Document doc = Jsoup.parse(TestUrl);
Element link = doc.select("a").first();
/**
* value will be "ILN_20140112_0021_N0R.gif"
*/
String value = link.text();
答案 2 :(得分:0)
编辑:改为参考@ ashatte的解决方案。
Document doc = Jsoup.parse
(new URL("http://radar.weather.gov/ridge/RadarImg/N0R/ILN/"),
3000);
//Or whatever your link is; 3000 is timeout
int ignoreCount = 0;
//using a counter to ignore top 2 lines
for (Element item : doc.select("tr")) {
// Selects the <tr> elements so item is a single <tr>
if (a > 1) {
Element link = item.select("a").first();
// selects first <a> element
if (link != null && link.hasAttr("href"))
String href = link.attr("href"));
// fetches href attribute from the selected <a>
}
a++;
}
这只是许多人中的一种方式。我强烈建议您阅读JSOUP cookbook