使用threading+queue队列,发送get请求,输出状态码

本文介绍了如何结合Python的threading模块和queue模块,实现并发发送GET请求,并详细记录每个请求的状态码。通过创建线程池,将URL放入队列中,线程从队列中取出URL进行请求,最后输出所有请求的状态码。

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

使用threading+queue队列,发送get请求,输出状态码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import threading
from queue import Queue


class JianDan(threading.Thread):
    # 类的构造方法,构造类对象时传入queue
    def __init__(self, queue):
        # 将主体self传入线程的构造方法中
        threading.Thread.__init__(self)
        # 绑定传入的queue为类对象的queue
        self.queue = queue

    def run(self):
        # 当queue队列不为空时
        while not self.queue.empty():
            # 从队列中取出一个url
            url = self.queue.get_nowait()
            # 调用spider方法,传入url来发送get请求
            self.spider(url)
            # 打印队列的剩余数
            print(self.queue.qsize())
            # 打印队列是否为空的状态
            print(self.queue.empty())

    def spider(self, url):
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}
        r = requests.get(url=url, headers=headers)
        print(r.status_code, len(r.content))


def main():
    # 创建一个数量为200的队列的对象
    q = Queue(200)

    # 将url地址压入到队列里
    for i in range(0, 10):
        q.put('http://www.bj.chinanews.com/news/2021/0228/8103' + str(i) + '.html')

    # 开始创建线程队列
    threads = []
    # 设置线程数
    thread_count = 30

    for i in range(thread_count):
        # 将类对象压入线程队列中
        threads.append(JianDan(q))

    for t in threads:
        t.start()
        t.join()


if __name__ == '__main__':
    main()

执行结果:

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值