我用Python做了簡單的網絡爬蟲。到目前爲止,它所做的一切都會創建一組應該訪問的網址,這是一組已經訪問過的網址。在解析頁面時,它會將該頁面上的所有鏈接添加到應該訪問的集合中,並將頁面url添加到已訪問的集合中,等等,而should_be_visited的長度大於0.到目前爲止,它在一個線程中執行所有操作。針對網絡爬蟲的Python線程或多處理?
現在我想爲此應用程序添加並行性,所以我需要具有相同類型的鏈接和很少的線程/進程,其中每個將從should_be_visited中彈出一個url並更新already_visited。我真的迷失在線程和多處理,我應該使用,我需要一些池,隊列嗎?
對於要訪問的URL集合,它們中的很多是同一臺服務器還是全部來自不同的服務器? – halfer
所有的都是一樣的 – wasd
好的,在這種情況下,你可能根本不應該平行,除非服務器在你的控制之下,並且你的服務器/網絡能夠處理負載。對於遠程管理員認爲拒絕服務攻擊的請求,您應該在每個請求之間稍稍延遲一段時間,而不是加快請求速度,可能會延遲一兩秒。廣泛的抓取規則是**它應該慢慢完成,而不是快速**,並且未能觀察到這可能會將您的服務器放在IP阻止列表中。 – halfer