python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题

python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题,第1张

概述爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题。那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy *** 作数据库 *** 作比较慢,导致pipelin

爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题。那为什么会造成这种结果呢?

其原因是由于SpIDer的速率比较快,而scapy *** 作数据库 *** 作比较慢,导致pipeline中的方法调用较慢,这样当一个变量正在处理的时候,一个新的变量过来,之前的变量的值就会被覆盖。

就比如pipline的速率是1TPS,而spIDer的速率是5TPS,那么数据库应该会有5条重复数据。

解决方案是对变量进行保存,在保存的变量进行 *** 作,通过互斥确保变量不被修改。

下面将代码进行改造一下:

将 pipelines.py 中的 process_item 方法中的item改为深度拷贝,即

def process_item(self,item,spIDer):

      copy_item = copy.deepcopy(item)

      将下面的代码中item用copy_item替换

并在头部加载copy包

import copy

没有copy包的小伙伴可以在命令窗口进行下载

pip install copy

 

总结

以上是内存溢出为你收集整理的python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题全部内容,希望文章能够帮你解决python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1190389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存