使用JSoup获取所有文本链接

时间:2017-12-04 06:50:03

标签: java html jsoup

我正在使用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
}

2 个答案:

答案 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
}