首页 > 解决方案 > Scrapy web 抓取:如何消除解析作为瓶颈

问题描述

我有一个抓取项目(使用 Scrapy),需要抓取数亿个网址。我目前的瓶颈是解析服务器响应。通过解析 - 以 JSON 格式清理和结构化数据 - 抓取速度约为 550 页/分钟。如果不进行解析,理论上的最大值约为 1100 页/分钟。

Scrapy 有没有办法推迟解析,或者把它交给另一个进程?我知道使解析代码更精简会有所帮助。我目前正在改进简化该代码。

这是实现〜1100页/分钟的蜘蛛:

class QuotesSpider(scrapy.Spider):
    name = "spy"

    def __init__(self):
        # x class instance declared
        self.urls = self.x.urls(10000)

    def start_requests(self):
        for url in self.urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, r):
        # my bottleneck
        # how to prevent parsing from becoming a bottleneck?
        # possibly adding responses to RAM?
        print('hello')

标签: performanceweb-scrapingscrapyscrapyd

解决方案


推荐阅读