Requests库的7个主要方法:
方法 | 说明 |
---|---|
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 |
requests.request(method, url, **kwargs)
method:请求方式,对应get/put/post等7种
url:拟获取页面的url链接
**kwargs:控制访问的参数,共13个
r = requests.request(‘GET’, url, **kwargs)
r = requests.request(‘HEAD’, url, **kwargs)
r = requests.request(‘POST’, url, **kwargs)
r = requests.request(‘PUT’, url, **kwargs)
r = requests.request(‘PATCH’, url, **kwargs)
r = requests.request( ‘delete’, url, **kwargs)
r = requests.request(‘OPTIONS’, url, **kwargs)
OPTIONS 事实上是向服务器获取一些服务器跟客户端能够打交道的参数,不与获取的资源直接相关,因此用得比较少。
**开头表示可选的,要用命名方法来调入参数
params:字典或字节序列,作为参数增加到url中
通过这样的一个参数,我们可以把一些键值对增加到 URL 中,使得 URL 再去访问时,不止访问这个资源,而同时带入了一些参数,服务器可以接受这些参数,并根据这些参数筛选部分资源返回回来。
data:字典、字节序列或文件对象,作为Request的内容
不存到URL链接里,而是URL链接对应的位置那里。
json:JSON格式的数据,作为Request的内容
headers:字典,HTTP定制头
也就是说我们可以模拟任何我们想模拟的浏览器向服务器发起访问,而这种模拟浏览器的方法就是在headers字段中来实现。
cookies:字典或CookieJar,Request中的cookie
auth:元组,支持HTTP认证功能
这两个都是requests的高级功能
files:字典类型,传输文件
timeout:设定超时时间,秒为单位
proxies:字典类型,设定访问代理服务器,可以增加登录认证
防止逆追踪
allow redirects:True/False,默认为 True,重定向开关
stream:True/False,默认为 True,获取内容立即下载开关
verify:True/False,默认为 True,认证SSL证书开关
cert:本地 SSL证书路径
data、json、headers要灵活掌握,访问网页时适当使用。
requests.get(url, params=None, **kwargs)
url:拟获取页面的 urI链接
params:url中的额外参数,字典或字节流格式,可选
kwargs:12个控制访问的参数
最通常的方法是通过 r=request.get(url) 构造一个向服务器请求资源的 url对象,这个对象是 Request库内部生成的:
r 返回的是一个包含服务器资源的 Response对象,包含从服务器返回的所有的相关资源。
url 是通过 http协议存取资源的一个路径,它就像我们电脑里面的一个文件的路径一样。
requests.head(url, **kwargs)
url:拟获取页面的urI链接
**kwargs:13个控制访问的参数
requests.post(url, data=None, json=None, **kwargs)
url:拟更新页面的url链接
data:字典、字节序列或文件,Request的内容
json:JSON格式的数据,Request的内容
**kwargs:11个控制访问的参数
requests.put(url, data=None, **kwargs)
url:拟更新页面的urI链接
data:字典、字节序列或文件,Request的内容
**kwargs:12个控制访问的参数
requests.patch(url, data=None, **kwargs)
url:拟更新页面的url链接
data:字典、字节序列或文件, Request的内容
**kwargs:12个控制访问的参数
requests.delete(url, **kwargs)
url:拟删除页面的url链接
**kwargs:13个控制访问的参数
get方法是最常用的方法,因为在 HTTP协议中,向某一个 URL 去提交资源的功能,在服务器上是严格受控的,这里边有很大的安全问题。如果某一个 URL 是允许任何用户无限制地向上传输相关资源的,那么就会出现很多问题。
比如说,我们可以用大量的垃圾信息,去使得服务器的资源消耗完,甚至我们可以去传输一些不可控的、或者恶意的内容到某一个 URL 上,这都是对网络空间不负责任的表现。
因此,在使用requests库的时候,最常用get方法,也就是说我们通过get方法来爬取一些内容,并且部分地向服务器提交一些内容。而对于某些特别大的URL链接,用head获取资源概要。重点掌握 get 和 head。
服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。
服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。
服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。
根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。
服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。
网络连接有风险,异常处理很重要
因此要用 try、except 的方式来保证网络连接的异常能够被有效处理。
核心的一行代码:
r.raise_for_status() # Response对象的raise_for_status()函数
它的作用是:如果返回的对象的状态码不是200,它将产生一次异常,所以 except 能够捕获到所有网络连接错误时的异常。