首页 > 解决方案 > 如何在 Scrapy 中运行多个相同的蜘蛛?

问题描述

我有一个 url 列表,例如 [' http://example.com/page1 ', http://example.com/page2 ',...]。

这些 url 在一个域名中,我已经用 Scrapy 编写了一个爬虫,我需要使用同一个爬虫一起运行这些 url。如果我有 10 个 url,我想创建 10 个相同的进程来运行爬虫以提高效率。有解决办法吗?

我尝试使用 CrawlerProcess 来运行爬虫,但是如果 url 太多,它会提醒我 TCP 连接太多的错误。虽然爬虫一直在运行,但是这种方式不利于维护。

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())
page_urls = ['http://example.com/page1', 'http://example.com/page2',]

for page_url in page_urls:
    process.crawl('vimeo', start_urls=[page_url])
process.start()

标签: python-3.xscrapy

解决方案


如果目标是提高单个蜘蛛的并发请求数,而不是专门并行生成多个蜘蛛,我建议您简单地使用设置,如DOWNLOAD_DELAY,CONCURRENT_REQUESTCONCURRENT_REQUESTS_PER_DOMAIN.


推荐阅读