2016-05-16 80 views
1

我想用scrapy構建一個廣泛的爬蟲,怎樣才能運行許多併發的蜘蛛但同時保持它們爬行不變的域?用scrapy廣泛爬行

回答

0

運行同一個域的多個蜘蛛的目的是什麼? 你想加速爬行過程還是蜘蛛有不同的邏輯?

  1. 如果首先看看docs。您應該在settings.py文件中增加CONCURRENT_REQUESTS = 100。一隻蜘蛛就足夠了。

  2. 如果蜘蛛有不同的邏輯,只需爲它們中的每一個創建一個分離類。

+0

是的,我想在不同的域上運行多個蜘蛛。如果問題不清楚,我很抱歉。如果設置CONCURRENT_REQUESTS = 100和CONCURRENT_REQUESTS_PER_IP = 1,這是否解決了這個問題,我將有100個不同的蜘蛛每個抓取自己的域? – codeer

+0

這將是同一個蜘蛛,看看[文檔](http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests-per-ip)[+](http:/ /doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests) –

0

我想我明白你來自哪裏。您希望每個域都進行分佈式限制,以便您可以並行運行多個爬網,同時尊重每個網站的限制。要做到這一點,您需要開發一個與蜘蛛共享的東西(數據庫?)交談的中間件。

一個衆所周知的這樣的系統是​​。

正如你所看到的here它支持細粒度的分佈式控制,你可以控制每個域的「難度」。

它還具有類似於您要查找的重複數據刪除功能(請參閱here)。主要的區別在於它並沒有反映出Item的要求,但是這應該會更好。

+0

是的,這正是我期待的。我想要1.讓我的刮板使用相同的域池,2.所有的蜘蛛將它們的物品返回到同一個刮取物品池,在那裏它們被過濾以獲得重複。 3.確保它們不在相同的域上開始爬網。廢鋼雲是否具有這種內置的功能?我剛剛看到他們的網站。 – codeer

+0

更新了上面的註釋。 – neverlastn

0

或者,如果您需要的是分佈式爬網程序,則可以使用NutchStormCrawler代替。兩者都設計爲在分佈式集羣上運行,前者使用Apache Hadoop和後者Apache Storm。