我正在使用JSoup从网页中抓取内容。
我希望页面上的所有链接都包含一些包含文本(文本无关紧要),只需要非空/图像等。
我想要的链接示例:
<a href="somepage.html">Link to Some Page</a>
因为它包含“链接到某些页面”文本
我不想要的链接:
<a href="somepage.html"><img src="someimage.jpg"/></a>
<a href="somepage.html"></a>
我的代码看起来像这样。如何修改它才能获得第一种链接?
Document document = // I get my document object
Elements linksOnPage = document.select("a[href]")
for (Element page : linksOnPage) {
String link = page.attr("abs:href");
// I do stuff with the link
}
答案 0 :(得分:3)
你可以这样做。 虽然它可能不是那里最有效的解决方案,但确实有它的作用。
注意:函数text()
会为您提供干净的文本,因此如果其中包含任何HTML代码,则不会返回它们。
Document doc = // get the doc
Elements linksOnPage = document.select("a");
for (Element pageElem : linksOnPage){
String link = "";
if(pageElem.text().trim().equals(""))
continue;
// do smth with it
}
答案 1 :(得分:0)
我正在使用它并且它工作正常:
Document document = // I get my document object
Elements linksOnPage = document.select("a:matches(([^\\s]+))");
for (Element page : linksOnPage) {
String link = page.attr("abs:href");
// I do stuff with the link
}