多线程爬取糗事网python3

本文介绍了一个基于多线程的爬虫框架设计,利用queue进行数据交互,通过创建爬取页面和处理数据的类,实现高效的数据采集与解析。文章详细展示了如何使用线程池、队列和锁来协调多个线程的工作,确保数据的正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值