如何解决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 = []
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。