Python之requests使用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Python之requests使用

继urllib请求库后,python有了更为强大的请求库 requests,有了它,Cookies、登录验证、代理设置等操作变得非常简单,只需要一个个参数即可实现相应的要求。


1、安装环境


pip install requests

官方地址:https://requests.readthedocs.io/en/latest/


2、实例引入


urllib库中的urlopen方法实际上是以GET方式请求网页,而requests中相应的方法就是get方法,是不是感觉表达更明确一些?下面通过实例来看一下:

image.png

测试实例:

image.png

3、GET


image.png

获取二进制数据

下面以图片为例来看一下:

image.png

如果不传递 headers,就不能正常请求:

image.png

但如果加上 headers 并加上 User-Agent 信息,那就没问题了:

image.png

4、POST请求


前面我们了解了最基本的 GET 请求,另外一种比较常见的请求方式是 POST。使用 requests 实现 POST 请求同样非常简单,示例如下:

image.png

测试网站:


  • 巨潮网络数据 点击资讯选择公开信息

image.png

发送请求后,得到的自然就是响应。在上面的实例中,我们使用 text 和 content 获取了响应的内容。此外,还有很多属性和方法可以用来获取其他信息,比如状态码、响应头、Cookies 等。示例如下:

image.png

状态码常用来判断请求是否成功,而 requests 还提供了一个内置的状态码查询对象 requests.codes,示例如下:

image.png

那么,肯定不能只有 ok 这个条件码。下面列出了返回码和相应的查询条件:

image.png

5、高级用法


1.代理添加

image.png

2.快代理IP使用


打开后,默认http协议,返回格式选json,我的订单是VIP订单,所以稳定性选稳定,返回格式选json,然后点击生成链接,下面的API链接直接复制上。

image.png

3.关闭警告

image.png

流程

image.png

6、初级


image.png


7、全站采集


1.封装公共文件


创建utils文件夹,写一个base类供其他程序调用

image.png

2.案例实践

image.png

文件操作标识:

image.png

8、requests-cache


pip install requests-cache


在做的时候,我们往往可能这些情况:


  • 网站比较复杂,会碰到很多重复请求。
  • 有时候意外中断了,但我们没有保存状态,再次运行就需要重新进行。


样例1:

image.png

样例2:

image.png


但是,刚才我们在写的时候把 requests 的 session 对象直接替换了。有没有别的写法呢?比如我不影响当前代码,只在代码前面加几行初始化代码就完成 requests-cache 的配置呢?

image.png

这次我们直接调用了 requests-cache 库的 install_cache 方法就好了,其他的 requests 的 Session 照常使用即可。


刚才我们知道了,requests-cache 默认使用了 SQLite 作为缓存对象,那这个能不能换啊?比如用文件,或者其他的数据库呢?答案当然是可以的。


比如我们可以把后端换成本地文件,那可以这么做:

requests_cache.install_cache('demo_cache', backend='filesystem')

如果不想生产文件,可以指定系统缓存文件

requests_cache.install_cache('demo_cache', backend='filesystem', use_cache_dir=True)

requests_cache.install_cache('demo_cache', backend='filesystem', use_cache_dir=True)


另外除了文件系统,requests-cache 也支持其他的后端,比如 Redis、MongoDB、GridFS 甚至内存,但也需要对应的依赖库支持,具体可以参见下表:

Backend Class Alias Dependencies
SQLite SQLiteCache sqlite
Redis RedisCache redis redis-py
MongoDB MongoCache mongodb pymongo
GridFS GridFSCache gridfs pymongo
DynamoDB DynamoDbCache dynamodb boto3
Filesystem FileCache filesystem
Memory BaseCache memory

比如使用 Redis 就可以改写如下:

image.png


更多详细配置可以参考官方文档:https://requests-cache.readthedocs.io/en/stable/user_guide/backends.html#backends


当然,我们有时候也想指定有些请求不缓存,比如只缓存 POST 请求,不缓存 GET 请求,那可以这样来配置:

image.png

当然我们还可以匹配 URL,比如针对哪种 Pattern 的 URL 缓存多久,则可以这样写:

image.png


好了,到现在为止,一些基本配置、过期时间配置、后端配置、过滤器配置等基本常见的用法就介绍到这里啦,更多详细的用法大家可以参考官方文档:https://requests-cache.readthedocs.io/en/stable/user_guide.html

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
机器学习/深度学习 数据采集 JSON
Python爬虫requests库详解#3
摘要:python requests库基用法,高级用法【2月更文挑战第10天】
60 0
Python爬虫requests库详解#3
|
4月前
|
Python
Python Requests 基本使用(与 urllib 的区别)
Python Requests 基本使用(与 urllib 的区别)
53 0
|
6月前
|
JSON 数据格式 Python
Python分享之requests(1)
Python分享之requests(1)
|
6天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
8天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
16天前
|
开发者 Python
Python中使用`requests`库进行文件上传与下载的技术详解
【4月更文挑战第12天】在Python的网络编程中,文件上传和下载是常见的需求。`requests`库作为一个强大且易用的HTTP客户端,为我们提供了简便的文件上传和下载功能。本文将详细介绍如何在Python中使用`requests`库进行文件上传和下载。
|
16天前
|
安全 API 开发者
Python中使用`requests`库进行请求头与自定义参数设置的技术详解
【4月更文挑战第12天】在Python中,`requests`库是一个强大且灵活的HTTP客户端,用于发送所有类型的HTTP请求。在发送请求时,我们经常需要设置请求头和自定义参数来满足不同的需求。本文将详细探讨如何在Python中使用`requests`库进行请求头和自定义参数的设置。
|
1月前
|
Python
如何使用Python的Requests库进行网络请求和抓取网页数据?
如何使用Python的Requests库进行网络请求和抓取网页数据?
13 0
|
1月前
|
UED Python
python使用 requests 设置读取超时时间
python使用 requests 设置读取超时时间
22 0
|
1月前
|
JSON 数据格式 Python
如何使用 Python 中的`requests`库发送 HTTP 请求?
【2月更文挑战第21天】【2月更文挑战第66篇】如何使用 Python 中的`requests`库发送 HTTP 请求?