2016-05-17 27 views
19

我們一直使用Scrapyd service一段時間,直到現在。它爲scrapy項目提供了一個很好的包裝,它的蜘蛛讓它通過HTTP API來控制蜘蛛:ScrapyRT vs Scrapyd

Scrapyd是一個運行Scrapy蜘蛛的服務。

它允許您使用HTTP JSON API部署您的Scrapy項目並控制其蜘蛛 。

但是,最近,我發現另一種「新鮮」包裝 - ScrapyRT,根據項目介紹,聽起來非常有前途和類似Scrapyd:這爲調度提供API

HTTP服務器Scrapy蜘蛛和蜘蛛製作請求。

這個包是Scrapyd的替代品嗎?如果是,那麼兩者有什麼區別?

回答

14

他們沒有很多共同點。正如您已經看到的,您必須將您的蜘蛛部署到scrapyd,然後安排抓取。 scrapyd是一個在服務器上運行的獨立服務,您可以在其中部署和運行您喜歡的每個項目/蜘蛛。

使用ScrapyRT,您可以選擇一個項目,然後將cd指定到該目錄。然後你運行例如scrapyrt,然後通過簡單的(並且非常類似於scrapyd的)REST API,開始在該項目上抓取蜘蛛程序。然後您將抓取的項目作爲JSON響應的一部分返回。

這是一個非常好的想法,它看起來很快,精益和定義。另一方面,Scrapyd更成熟,更通用。

這裏有一些關鍵的區別:

  • Scrapyd支持蜘蛛和多個項目的多個版本。就我可以看到的是,如果要使用ScrapyRT運行兩個不同的項目(或版本),則必須爲每個項目使用不同的端口。
  • Scrapyd提供了用於在物品保存在服務器中的基礎設施,而ScrapyRT將它們發回給您的響應中,對我而言,這意味着它們應該處於幾MB(而不是潛在GB)的順序。同樣,與ScrapyRT相比,在scrapyd中處理日誌更爲通用。
  • Scrapyd(可能會持續)將作業排隊,並讓您控制並行運行的Scrapy進程的數量。 ScrapyRT做了一些簡單的事情,據我所知,只要請求到達,就立即開始抓取每個請求。在其中一個蜘蛛中攔截代碼也會阻止其他人。
  • ScrapyRT需要url參數,據我所知可以覆蓋任何與start_urls相關的邏輯。

我會說ScrapyRT和Scrapyd在這個時候非常巧妙地不重疊。當然,你永遠不知道未來會是什麼。

+0

現在我看到了差異!謝謝!並再次感謝這本驚人的書,迪米特里奧斯! – alecxe

+0

非常歡迎,非常感謝@alecxe!並且非常感謝這個出色的問題! :) – neverlastn