[英]Run multiple scrapy spiders at once using scrapyd
我正在使用scrapy進行一個項目,我想要刮掉一些網站 - 可能是數百個 - 我必須為每個網站編寫一個特定的蜘蛛。 我可以使用以下方法在部署到scrapyd的項目中安排一個蜘蛛:
curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider2
但是如何一次安排項目中的所有蜘蛛呢?
所有幫助非常感謝!
我一次運行200多個蜘蛛的解決方案是為項目創建一個自定義命令。 有關實現自定義命令的更多信息,請參見http://doc.scrapy.org/en/latest/topics/commands.html#custom-project-commands 。
YOURPROJECTNAME / commands / allcrawl.py :
from scrapy.command import ScrapyCommand
import urllib
import urllib2
from scrapy import log
class AllCrawlCommand(ScrapyCommand):
requires_project = True
default_settings = {'LOG_ENABLED': False}
def short_desc(self):
return "Schedule a run for all available spiders"
def run(self, args, opts):
url = 'http://localhost:6800/schedule.json'
for s in self.crawler.spiders.list():
values = {'project' : 'YOUR_PROJECT_NAME', 'spider' : s}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
log.msg(response)
確保在settings.py中包含以下內容
COMMANDS_MODULE = 'YOURPROJECTNAME.commands'
然后從命令行(在項目目錄中),您只需鍵入
scrapy allcrawl
對不起,我知道這是一個很老的話題,但我最近開始學習scrapy並且在這里發現了,我還沒有足夠的代表發表評論,所以發布了答案。
從常見的scrapy實踐中,您將看到如果您需要一次運行多個蜘蛛,您將必須啟動多個scrapyd服務實例,然后在這些實例中分發您的Spider運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.