Requests库常用方法及参数介绍

1年前 (2024-04-27)
Requests 库中定义了七个常用的请求方法,这些方法各自有着不同的作用,在这些请求方法中 requests.get() 与 requests.post() 方法最为常用。请求方法如下所示:

常用请求方法

方法

说明

requests.request()

构造一个请求对象,该方法是实现以下各个方法的基础。

requests.get()

获取HTML网页的主要方法,对应于 HTTP 的 GET 方法。

requests.head()

获取HTML网页头信息的方法,对应于 HTTP 的 HEAD 方法。

requests.post()

获取 HTML 网页提交 POST请求方法,对应于 HTTP 的 POST。

requests.put()

获取HTML网页提交PUT请求方法,对应于 HTTP 的 PUT。

requests.patch()

获取HTML网页提交局部修改请求,对应于 HTTP 的 PATCH。

requests.delete()

获取HTML页面提交删除请求,对应于 HTTP 的 DELETE。


上述方法都提供了相同的参数,其中某些参数已经使用过,比如headersparams,前者用来构造请求头,后者用来构建查询字符串。这些参数对于编写爬虫程序有着关重要的作用。本节对其他常用参数做重点介绍。

SSL认证-verify参数

SSL 证书是数字证书的一种,类似于驾驶证、护照和营业执照。因为配置在服务器上,也称为 SSL 服务器证书。SSL 证书遵守 SSL 协议,由受信任的数字证书颁发机构 CA(电子认证服务)颁发。 SSL 具有服务器身份验证和数据传输加密功能。

verify参数的作用是检查 SSL 证书认证,参数的默认值为 True,如果设置为 False 则表示不检查 SSL证书,此参数适用于没有经过 CA 机构认证的 HTTPS 类型的网站。其使用格式如下:

response = requests.get(

url=url,

params=params,

headers=headers,

verify=False

)

代理IP-proxies参数

一些网站为了限制爬虫从而设置了很多反爬策略,其中一项就是针对 IP 地址设置的。比如,访问网站超过规定次数导致流量异常,或者某个时间段内频繁地更换浏览器访问,存在上述行为的 IP 极有可能被网站封杀掉。

代理 IP 就是解决上述问题的,它突破了 IP 地址的访问限制,隐藏了本地网络的真实 IP,而使用第三方 IP 代替自己去访问网站。

1) 代理IP池

通过构建代理 IP 池可以让你编写的爬虫程序更加稳定,从 IP 池中随机选择一个 IP 去访问网站,而不使用固定的真实 IP。总之将爬虫程序伪装的越像人,它就越不容易被网站封杀。当然代理 IP 也不是完全不能被察觉,通过端口探测技等术识仍然可以辨别。其实爬虫与反爬虫永远相互斗争的,就看谁的技术更加厉害。

2) proxies参数

Requests 提供了一个代理 IP 参数proxies,该参数的语法结构如下:

proxies = {

'协议类型(http/https)':'协议类型://IP地址:端口号'

}

下面构建了两个协议版本的代理 IP,示例如下:

proxies = {

'http':'http://IP:端口号',

'https':'https://IP:端口号'

}

3) 代理IP使用

下面通过简单演示如何使用proxies参数,示例如下:

import requests

url = 'http://httpbin网站站点" rel="nofollow" />

{

"args": {},

"headers": {

"Accept": "*/*",

"Accept-Encoding": "gzip, deflate",

"Cache-Control": "max-age=259200",

"Host": "httpbin网站站点" rel="nofollow" /> 89 免费代理(http://www.89ip网站站点" rel="nofollow" /> )是一个专门提供免费代理 IP 的网站,不过想找到一个质量较高的免费代理好比大海捞针。

用户认证-auth参数

Requests 提供了一个auth参数,该参数的支持用户认证功能,也就是适那些需要验证用户名、密码的网站。auth 的参数形式是一个元组,其格式如下:

auth = ('username','password')

其使用示例如下所示:

class xSpider(object):

def __init__(self):

self.url = 'http://code.tare网站站点" rel="nofollow" />