欢迎光临散文网 会员登陆 & 注册

Python爬虫之requests使用

2023-03-19 21:39 作者:py爱好loer  | 我要投稿

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

1、安装环境

pip install requests

官方地址:docs.python-requests.org

2、实例引入

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

测试实例:

3、GET抓取

3.1 抓取二进制数据

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

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

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

4、POST请求

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

测试网站

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

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

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

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

5、高级用法

5.1--代理添加

5.2--快代理IP使用

https://www.kuaidaili.com/doc/dev/quickstart/

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


5.3--关闭警告

爬虫流程

6、初级爬虫

7、全站采集

7.1--封装公共文件

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

7.2--案例实践

文件操作标识


8、requests-cache

pip install requests-cache

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

  • 网站比较复杂,会碰到很多重复请求。

  • 有时候爬虫意外中断了,但我们没有保存爬取状态,再次运行就需要重新爬取。

测试样例对比

测试样例对比2

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

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

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

自然是可以的。

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

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

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

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

更多详细配置可以参考官方文档:requests-cache.readthedocs.io

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

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

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


Python爬虫之requests使用的评论 (共 条)

分享到微博请遵守国家法律