mongodb - Scrapy:批量上传到数据库的最快方法?
问题描述
我的 Scrapy 蜘蛛每 1000 个抓取的 URL 将结果上传到 Mongo 数据库。我在上传之前将结果附加到列表中。鉴于附加到列表有点慢,有没有办法使用列表理解来保存结果?保存到列表最快吗?
这是我的(简化的)蜘蛛:
class QuotesSpider(scrapy.Spider):
name = "spy"
def __init__(self):
# init MongoDB instance
self.res_list = []
self.urls = self.x.urls(10000)
def start_requests(self):
for url in self.urls:
yield scrapy.Request(url=url, callback=self.parse)
async def do_insert(self, documents):
await self.db['coll'].insert_many(documents)
def parse(self, r):
res = self.x.process(r)
self.res_list.append(res)
if len(self.res_list) > 1000:
url_list = [u['url'] for u in self.res_list]
loop = asyncio.get_event_loop()
loop.run_until_complete(self.do_insert(self.res_list))
print('UPLOADING TO DATABASE...')
self.res_list = []
解决方案
推荐阅读
- node.js - NPM 和如何运行所有顺序命令,即使一个命令失败
- azure - 使用 MS Bot Framework 将 JWT 保存在 UserState/Azure Blob 存储上是否安全?
- mysql - MySQL 查询提取到 csv,但信息不在正确的行中
- typescript - Vincit/Objection.js 在使用 .withGraphFetched() 时返回“无法读取未定义的属性 '$relation'”
- pip - pip install 创建一个真正的目录
- azure-devops - 如何在 Yaml Bash 步骤中存储从 CLI 创建的 Databricks 令牌
- ruby-on-rails - ActiveRecord 存储文档不清楚附件过程
- powerbi - PowerBi 中的旭日图帮助
- selenium - 如何使用 xpath 定位上部子元素
- javascript - 在 React 中动态添加背景 url