首页 > 编程语言 >python-Grequests,一个好用的 requests库的异步版本!

python-Grequests,一个好用的 requests库的异步版本!

时间:2024-03-05 16:12:57浏览次数:26  
标签:https 请求 python image Grequests grequests requests response

Grequests是什么?

grequests是一个Python库,它是requests库的异步版本。它允许你同时发送多个HTTP请求,而不必等待每个请求依次响应。可以在等待服务器响应的同时执行其他任务,从而节省时间并提高效率。

安装Grequests

pip install grequests

 

使用示例一:批量获取网页

假如有一个网站列表,想快速检查它们是否都能正常访问。使用grequests。下面是一个代码的示例:

import grequests

# 定义一组要访问的URL
urls = [
    'https://www.baidu.com',
    'https://www.taobao.com',
    'https://www.12306.cn/index/',
    # 更多URL...
]

# 创建一个请求列表
unsent_requests = (grequests.get(url) for url in urls)

# 使用grequests发送所有请求
results = grequests.map(unsent_requests)

# 输出结果
for response in results:
    if response:
        print(f'{response.url} - 状态码: {response.status_code}')
    else:
        print('请求失败')

在这个代码中,我们首先定义了一个URL列表,然后创建了一个未发送请求的生成器。grequests.map()函数接收这个生成器,并发送所有请求,然后返回一个包含响应的列表。最后我们遍历响应列表,打印出每个URL的状态码。  

使用示例二:异步下载多个文件

如果你需要下载多个文件,grequests也可以做到。以下是一个下载多个图片并保存到本地的示例:

import os
import grequests

# 定义图片链接列表
image_urls = [
    'https://example.com/image1.jpg',
    'https://example.com/image2.jpg',
    'https://example.com/image3.jpg',
    # 更多图片链接...
]


# 准备下载函数
def download_image(response, *args, **kwargs):
    if response.status_code == 200:
        # 从URL中提取图片名称
        image_name = os.path.basename(response.url)
        # 打开一个文件用于写入二进制数据
        with open(image_name, 'wb') as f:
            f.write(response.content)
            print(f'下载完成: {image_name}')


# 创建请求列表
unsent_requests = (grequests.get(url, stream=True, hooks={'response': download_image}) for url in image_urls)

# 发送请求
grequests.map(unsent_requests)

在这个代码中,定义了一个图片链接列表,为每个下载请求指定了一个回调函数download_image,它会在响应到达时触发。通过在请求中设置stream=True,告诉grequests以流式传输的方式获取数据,这对于大文件下载非常有用。hooks参数则用于指定回调函数。最后,我们使用grequests.map()来异步发送所有下载请求。 

标签:https,请求,python,image,Grequests,grequests,requests,response
From: https://www.cnblogs.com/pywen/p/18054271

相关文章

  • python-jose,一个好用的 Python 库!
    python-jose介绍:在做接口测试或者接口自动化测试中,身份验证和授权是很重要的一部分。JSONWebToken(JWT)是一种流行的身份验证和授权解决方案,它能够安全地在网络中传输信息。python-jose库是Python中处理JWT的强大工具,提供了丰富的功能和灵活的接口,能够轻松地处理JWT的生成、......
  • python turtle相关
    一、简介二、内容三、问题 一、简介最近需要考计算机二级python,然后里面出现了平时基本没用到的turtle,在这里做一下复习总结。turtle,  是Python中用来绘图的标准库,它总体上讲,就是控制一只乌龟在纸上画画,控制它的朝向,笔粗细,填充。二、内容以下,按书上......
  • Python 生成随机字符串
    0x00吐槽最近让项目坑的没办法,老写一些脚本来协助工作,刚好在测试python生成word的时候遇到需要随机字符串来命名文档名,简单写点东西记录一下0x01一班的童靴其实随机字符串这个东西在任何语言里都经常会用到,而且解决方法也简单首先定义一个字符串,随机字符串就从这里面取,然......
  • vsc 如何调试远程python代码
    1、远程python环境准备下载minicondahttps://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/注意py版本,需要下载对应版本的conda,找到对应的版本后(这里选择py312),鼠标右键复制链接wget 相关链接bash xxx.sh  按提示操作就行。最后一个提示可能是:是......
  • Python:如何风骚而又不失优雅的使用Switch...Case
    本渣PHP屌丝一枚,最近在用Python做一个东西碰到了这个问题,在这里给没踩过坑的朋友分享下以Python2.7为例从前有座山碰到参数特别多的情况的时候总是看着一堆if...elseif抓狂,斩不断,理还乱,幸好有Switch...Case可以很方便的处理多种情况的参数但是在Python中没有Switch...Case......
  • 1.Python3 基础语法
    Python3基础语法Python3中文官方文档https://docs.python.org/zh-cn/3.9/Python标准库https://docs.python.org/zh-cn/3.9/library/index.html1.Python保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python的标准库提供了一个keyword模块,可以输出当前版本的......
  • 3.Python3 流程控制
    Python3流程控制和其它编程语言一样,按照执行流程划分,Python程序也可分为3大结构,即顺序结构、选择(分支)结构和循环结构:Python顺序结构就是让程序按照从头到尾的顺序依次执行每一条Python代码,不重复执行任何代码,也不跳过任何代码。Python选择结构也称分支结构,就是让程序......
  • 2.Python3 基本数据类型
    Python3基本数据类型python是弱类型语言,弱类型语言有两个特点:变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。弱类型并不等于没有类型!弱类型是说在书写......
  • 7.Python3 函数
    Python3函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。1.函数定义Python定义函数使用def关键字,一般格......
  • 6.Python3 迭代器与生成器
    Python3迭代器与生成器1.迭代器迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器迭代器的定义字面意思:更新迭代,器:工具:可更新迭代的工具。专业角度:内部含有'__iter__'方法并且含......