如何使用jsoup从站点获取可导航链接?

时间:2017-06-13 06:08:15

标签: java html web-crawler jsoup anchor

我正在实施一个基本的抓取工具,以便以后在漏洞扫描程序中使用。我正在使用jsoup来连接/检索和解析html文档。

我手动提供目标网站的基础/根(www.example.com)并连接。

...
Connection connection = Jsoup.connect(url).userAgent(USER_AGENT);
Document htmlDocument = connection.get();
this.htmlDocument = htmlDocument;
...

然后我检索页面上的所有链接。

...
Elements linksOnPage = htmlDocument.select("a[href]");
... 

在此之后,我在链接之间循环,并尝试获取网站上所有页面的链接。

for (Element link : linksOnPage) {
                this.links.add(link.absUrl("href"));
    }

问题如下。根据我获得的链接,有些链接可能不是新页面的链接,甚至根本不是指向页面的链接。作为一个例子,得到了如下链接:

我需要一些帮助,这是对链接的过滤,以便我只获得指向同一根/基站点的新页面的链接。

1 个答案:

答案 0 :(得分:1)

这很容易。检查absUrl是以图像格式结束还是以js或css结尾:

if(absUrl.startsWith("http://www.ics.uci.edu/") && !absUrl.matches(".*\\.(bmp|gif|jpg|png|js|css)$")) 
{

    //here absUrl starts with domain name and is not image or js or css
}