2012-10-10 38 views
0

我構建了一個多線程的網頁爬蟲,它可以請求從相應的服務器獲取網頁。由於它是多線程的,它可以使服務器負擔過重。由於哪個服務器可以阻止抓取工具(禮貌)。網絡爬蟲連續向服務器發送請求的最小延遲

我只是想在相同服務器的連續請求之間添加最小延遲功能。是否將來自每個服務器(域)的robot.txt的最小延遲存儲到HashMap中,並將其與對該特定服務器的請求的最後一次時間進行比較可以嗎?

如果robot.txt中沒有指定延遲會怎麼樣?

+0

您能否詳細說明您的問題? –

回答

1

事實上的標準robots.txt文件格式沒有指定請求之間的延遲。這是一個非標準的擴展。

沒有「抓取延遲」指令並不意味着您可以自由選擇服務器。


無論從每個服務器(域)存儲從robot.txt的最小延遲進入一個HashMap並將其與該特定服務器由請求最後的定時將可以嗎?

這是不夠的。您還需要針對robots.txt未使用非標準指令的情況,在兩次請求之間實施最短時間。而且您還應該在503條回覆中尊重「Retry-After」標題。

理想情況下,您還應該注意響應請求所花費的時間。響應緩慢可能表明擁塞或服務器過載,如果網站管理員認爲是擁塞的原因,則更有可能阻止您的爬蟲。

1

我使用0.5秒作爲我的網絡爬蟲延遲。使用它作爲默認值,如果它被指定,你應該使用它。