Scrapy将两个蜘蛛放在单个文件中


问题内容

我在单个文件中写了两个蜘蛛。当我跑步时scrapy runspider two_spiders.py,只有第一个Spider被执行。如何在不将文件拆分为两个文件的情况下运行它们。

two_spiders.py:

import scrapy

class MySpider1(scrapy.Spider):
    # first spider definition
    ...

class MySpider2(scrapy.Spider):
    # second spider definition
    ...

问题答案:

让我们阅读文档

在同一进程中运行多个蜘蛛

默认情况下,当您运行时,Scrapy会为每个进程运行一个蜘蛛scrapy crawl。但是,Scrapy支持使用内部API在每个进程中运行多个蜘蛛。

这是一个同时运行多个蜘蛛的示例:

import scrapy
from scrapy.crawler import CrawlerProcess

class MySpider1(scrapy.Spider):
    # Your first spider definition
    ...

class MySpider2(scrapy.Spider):
    # Your second spider definition
    ...

process = CrawlerProcess()
process.crawl(MySpider1)
process.crawl(MySpider2)
process.start() # the script will block here until all crawling jobs are finished

(文档中没有更多示例)

从您的问题还不清楚您如何将两个蜘蛛放在一个文件中。仅用单个蜘蛛连接两个文件的内容是不够的。

尝试执行文档中写的内容。或者至少向我们显示您的代码。没有它,我们将无法为您提供帮助。