我试图解析我的大学网站,从主站点获取新闻列表(标题+链接)。但是,当我试图解析一个完整的网站时,我正在寻找的链接深深地嵌套在其他类,表等中。这是我试图使用的代码:
String url = "http://www.portal.pwr.wroc.pl/index,241.dhtml";
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("table.cwrapper .tbody .tr td.ccol2 div.cwrapper_padd div#box_main_page_news.cbox.grey div#dyn_main_news.cbox.padd2 div.nitem table.nitemt .tbody .tr td.nitemcell2 span.title_1");
ArrayList <String> listOfLinks = new ArrayList <String> ();
int counter = 0;
for (Element link : links) {
listOfLinks.add(link.text());
}
但它不起作用。是否有更好的方法来获取所有这些链接的href值和标题,如果它们中的每一个都放在:
<span class = "title_1">
<a href="Link Adress">Link Title</a>
</span>
也许某种循环会迭代所有这些标记,从中获取值?
感谢您的帮助: - )
答案 0 :(得分:2)
您的主要问题是,您正在寻找的信息不在您使用的网址上,而是在http://www.portal.pwr.wroc.pl/box_main_page_news,241.dhtml?limit=10。 你应该首先得到那个页面,然后使用它(它是Hovercraft和Andrei volgon的答案的组合) -
String url = "http://www.portal.pwr.wroc.pl/box_main_page_news,241.dhtml?limit=10";
String baseURL = "http://www.portal.pwr.wroc.pl/";
Document doc = Jsoup.connect(url).get();
Elements links = doc.select(".title_1 > a");
for (Element link : links) {
System.out.println("Title - " + link.text());
System.out.println(baseURL + link.attr("href"));
}
答案 1 :(得分:0)
您需要找到选择正确元素的最不复杂的唯一选择器。在您的情况下,解决方案非常简单:
doc.select(".title_1 > a")
答案 2 :(得分:0)
为什么不简单地执行,readline
然后在选择返回的元素中的每个元素上调用doc.select("a[href]");
和.attr("href")
?
例如:
.text()