多线程爬取糗事网python3

1.导入模块:

使用到了多线程这里使用queue进行数据交互

2.创建爬取页面的类

3.创建处理数据的类

4.创建调用函数

 

CRAM_EXIT = False
PARSE_EXIT = False


def main():
    pageQueue = Queue(20)
    for i in range(1, 21):
        pageQueue.put(i)
    # 采集结果
    dataQueue = Queue()
    filename = open("E://file/qiushi2.json", "a")
    # 创建锁
    lock = threading.Lock()
    # 三个采集线程的名字
    crawList = ['线程1号', '线程2号', '线程3号']
    threadcrawl = []
    # 存储三个采集线程的名字
    for threadName in crawList:

        thread = ThreadCrawl(threadName, pageQueue, dataQueue)
        thread.start()
        threadcrawl.append(thread)


    # 三个解析线程的名字
    parseList = ["解析线程1号", "解析线程2号", "解析线程3号"]
    # 存储三个解析线程
    threadparse = []
    for threadName in parseList:
        thread = ThreadParse(threadName, dataQueue, filename, lock)
        thread.start()
        threadparse.append(thread)

    while not pageQueue.empty():
        pass

    global CRAM_EXIT
    CRAM_EXIT = True

    print('pageQueue为空')

    for thread in threadcrawl:
        thread.join()
        print('1')
    while not dataQueue.empty():
        pass

    global PARSE_EXIT
    PARSE_EXIT = True

    for thread in threadparse:
        thread.join()
        print('2')

    with lock:
        # 关闭文件
        filename.close()
    print("谢谢使用!")


if __name__ == "__main__":
    main()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值