2012-07-03 75 views
1

我正在实现一个网络爬虫,我正在使用Crawler4j库。我没有获得网站上的所有链接。 我试图使用Crawler4j提取一页上的所有链接,并错过了一些链接。如何使用crawler4j提取页面上的所有链接?

Crawler4j版本:crawler4j-3.3

网址我使用的是:http:中几乎60和4-5://testsite2012.site90.com/frontPage.html

的这个页面上的链接号他们都在重复

号的链接crawler4j了:23

this是URL的网页列表,this是crawler4j给出的URL列表。

我看了“HtmlContentHandler.java”文件使用crawler4j提取的链接。在这里,只有与'src'和'href'链接相关的链接被提取。

我发现这些文件之间的区别。 Crawler4j缺少与'src'或'href'属性无关的链接,它们位于'script'标签下。 this是crawler4j未抓取的链接列表。

我怎样才能提取此网页上的所有链接? 我是否需要在HTML解析页面上进行字符串处理(如查找'http'),还是应该更改'HtmlContentHandler.java'文件的代码?

哪种方法最好?

即使我做的字符串操作,并提取此网页上的所有链接,但Crawler4j爬行利用自身爬,也不会在这样的情况下,它会错过一些网页的链接的网站的?

+0

使用Jsoup解析器。简单而整洁。 –

+0

http://jsoup.org/cookbook/extracting-data/working-with-urls –

回答

0

尝试使用Regular Expressions找到链接。

你可以看看here为例。

+0

我已经使用正则表达式,并使用“shouldVisit()”正则表达式控制该网页中抓取,分析。它不控制在已获取的页面上提取哪种类型的链接。 我希望你明白我在说什么。你做 ? – Amit

+0

我的意思是你使用Reg Exp来找到你需要的字符串(就像所有以'http://'开头的字符串)。看看我在'getStrWithPattern()'方法 – Tomer

+0

确定链接的示例。但问题是我想抓取一个网站。如果网站主页上有5个链接,并且crawler4j提取3(我将使用正则表达式提取剩余的链接),那么Crawler4j将继续基于这3个链接抓取网站,而不是5 在这种情况下,它可能会丢失一些页面。 在这种情况下该做什么? – Amit

相关问题