python用threading、Queue,实现快速爬取需求,但是发现写入到文件中有点数据是重复写入的,这是什么原因?

发布于 2022-09-11 14:35:17 字数 2318 浏览 33 评论 0

运行结果中出现大量的重复的结果,我想到是什么原因,新手不是很懂,求大神告知?

在没有改为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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

默嘫て 2022-09-18 14:35:17

请问现在你解决了吗,我也遇到这个问题,现在还没有找到答案

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文