performance - 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')
解决方案
推荐阅读
- c++ - C++17 是否提供生成器或其他内置方式来并行转换非实例化序列?
- c# - 内存缓存通用列表删除不影响缓存列表
- node.js - 如何在 NodeJs 中使用winston?
- c - 分段错误(核心转储) - 此错误仅有时显示,我似乎无法修复它
- rdf - 将自定义属性添加到 JSON-LD 中的现有类型
- ruby - Ruby 中这个时间转换代码的错误是什么?
- asp.net - 所有控制器的通用索引操作
- r - Rscript - 使用相同的 R 文件,R 终端的行为与 Rstudio 不同
- python-3.x - 功能和故事图 || 对 keras 政策的投入
- javascript - 添加输入时数据库未响应表单