python用threading、Queue,实现快速爬取需求,但是发现写入到文件中有点数据是重复写入的,这是什么原因?
运行结果中出现大量的重复的结果,我想到是什么原因,新手不是很懂,求大神告知?
在没有改为threading+Queue之前,是没有出现这种问题的。
相关代码 无关的代码就不展示了
import requests
import json,time,random
from collections import defaultdict
import threading
import Queue
from RotateUserAgentMiddleware import user_agent_list
class Aiqiyispider(threading.Thread):
def __init__(self,in_queue):
threading.Thread.__init__(self)
self.in_queue = in_queue
#爬虫所需的一些基础设置
.
.
.
.
.
def new_videourl(self,fristurl):
"""
爬虫的主体程序:爬取、判断、根据自己需要获取数据、保存数据
:return:
"""
def b_Spider(self,biaoq):
"""
对上面视频含有子视频的进行爬取,为上面new_videourl的补充部分
:return:
"""
def run(self):
"""
多进程主体程序
:return:
"""
while True:
try:
line = self.in_queue.get(timeout =2)
self.new_videourl(line)
except Exception,err:
break
if __name__=='__main__':
peacial = []
queue = Queue.Queue()
for i in xrange(4):
t = Aiqiyispider(queue)
# t.setDaemon(True)
# t.start()
peacial.append(t)
for tt in peacial:
tt.start()
file_qis = 爬取文件
for qis in file_qis:
all_file_id = qis.strip().split('\t')[0].split('|')[0]
queue.put(all_file_id)
for tt in peacial:
tt.join()
print 'END'
我就想知道出现这种结果的原因是什么?为什么出现??
下面为截取一部分结果,可以看出331844400这个出现了好几次,我的结果出现22次这行数据
331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮
357314200 357314200 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 SUPER JUNIOR-D&E《触 (Can You Feel It?)》触触舞蹈 (大家的触触舞蹈)
218013800 218013800 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 Bigbang - Oh Yeah
812884100 812884100 {"流派": "摇滚", "音乐类型": "单曲MV", "语种": "日语", "地区": "日韩"} 音乐 蒼井翔太 - 零
331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮
628752500 628752500 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 GFRIEND - FINGERTIP
331844400 331844400 {"流派": "流行", "音乐类型": "单曲MV", "语种": "韩语", "地区": "日韩"} 音乐 EXO - 冰淇淋蛋糕 CF花絮
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请问现在你解决了吗,我也遇到这个问题,现在还没有找到答案