Có cách nào để chạy tất cả các trình thu thập dữ liệu trong một dự án Scrapy mà không sử dụng daemon Scrapy không? Đã từng có một cách để chạy nhiều nhện với scrapy crawl
, nhưng cú pháp đó đã bị xóa và mã của Scrapy thay đổi khá nhiều.Chạy cục bộ tất cả các trình thu thập dữ liệu trong Scrapy
tôi đã cố gắng tạo lệnh của riêng tôi:
from scrapy.command import ScrapyCommand
from scrapy.utils.misc import load_object
from scrapy.conf import settings
class Command(ScrapyCommand):
requires_project = True
def syntax(self):
return '[options]'
def short_desc(self):
return 'Runs all of the spiders'
def run(self, args, opts):
spman_cls = load_object(settings['SPIDER_MANAGER_CLASS'])
spiders = spman_cls.from_settings(settings)
for spider_name in spiders.list():
spider = self.crawler.spiders.create(spider_name)
self.crawler.crawl(spider)
self.crawler.start()
Nhưng khi một con nhện được đăng ký với self.crawler.crawl()
, tôi nhận được lỗi khẳng định cho tất cả các nhện khác:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 138, in _run_command
cmd.run(args, opts)
File "/home/blender/Projects/scrapers/store_crawler/store_crawler/commands/crawlall.py", line 22, in run
self.crawler.crawl(spider)
File "/usr/lib/python2.7/site-packages/scrapy/crawler.py", line 47, in crawl
return self.engine.open_spider(spider, requests)
File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1214, in unwindGenerator
return _inlineCallbacks(None, gen, Deferred())
--- <exception caught here> ---
File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1071, in _inlineCallbacks
result = g.send(result)
File "/usr/lib/python2.7/site-packages/scrapy/core/engine.py", line 215, in open_spider
spider.name
exceptions.AssertionError: No free spider slots when opening 'spidername'
Có cách nào để làm cái này? Tôi không muốn bắt đầu phân lớp các thành phần cốt lõi của Scrapy chỉ để chạy tất cả các trình thu thập dữ liệu của tôi như thế này.
Bạn đang sử dụng phiên bản nào? '$ scrapy version -v' –
Bạn có biết về [' scrapyd'] (http://doc.scrapy.org/en/latest/topics/scrapyd.html) không? –
'0.16.4'. Tôi biết về Scrapyd, nhưng tôi đang thử nghiệm những con nhện ở địa phương, vì vậy tôi không muốn sử dụng nó. – Blender