我要做的就是:
- 抓取頁面
- 抓取網頁的所有鏈接,將它們放在一個列表
- 開始一個新的履帶,其訪問列表中的每個環節
- 下載它們
我如何才能讓crawler4j更快速地從頁面下載所有鏈接?
必須有更快捷的方式,我可以在瀏覽頁面時直接下載鏈接嗎?謝謝!
我要做的就是:
- 抓取頁面
- 抓取網頁的所有鏈接,將它們放在一個列表
- 開始一個新的履帶,其訪問列表中的每個環節
- 下載它們
我如何才能讓crawler4j更快速地從頁面下載所有鏈接?
必須有更快捷的方式,我可以在瀏覽頁面時直接下載鏈接嗎?謝謝!
一般的方法是根據您的內存要求(即您想要用於存儲所有這些信息的最大RAM),將抓取和下載任務分離爲單獨的工作線程,並使用最大數量的線程。
但是,crawler4j已經爲您提供此功能。通過將下載和抓取拆分爲單獨的線程,您可以嘗試最大限度地利用連接,將連接能夠處理的數據拉下來,並且提供信息的服務器可以發送給您。對此的自然限制是,即使您產生了1,000個線程,如果服務器僅以每秒0.3k的速度向您提供內容,那麼您仍將下載每秒僅300 KB的內容。但恐怕你對這方面沒有任何控制權。
另一種提高速度的方法是在具有較胖管道的系統上運行爬蟲到互聯網,因爲我猜你的最大下載速度是當前獲取數據速度的限制因素。例如,如果您在AWS實例(或任何雲應用程序平臺)上運行爬網,您將從與骨幹網的高速連接中受益,並縮短爬網一組網站所花費的時間有效地擴展您的帶寬遠遠超出您在家庭或辦公室連接中所獲得的帶寬(除非您在ISP工作)。
理論上可能的情況是,在管道非常大的情況下,對於要保存到本地(或網絡)磁盤存儲的任何數據,限制開始成爲磁盤的最大寫入速度。
這很完美,謝謝! – seinecle 2012-01-11 09:08:38