2012-07-03 82 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

相關問題