关于python:Python知识点Python-requests-模块

27次阅读

共计 3407 个字符,预计需要花费 9 分钟才能阅读完成。

Python requests 模块是什么
Python 爬虫或网络申请时,最先接触的第三方库就是 requests,该库开源地址为:https://github.com/psf/requests,
官网的 solgan 为 Requests is a simple, yet elegant, HTTP library。

咱们在日常编码的过程中,常常执行的一个操作就是查问手册,
requests 库提供了中文手册 – https://docs.python-requests….,因而大幅度降低了学习的难度。

不过中文翻译夹带了不少翻译者的情绪化文字,浏览的时候疏忽即可。

怎么用
申请参数以及申请办法
导入 requests 库之后,你首先学习到的就是 requests.get() 办法,上面首先从 get 办法的参数开始学习,
下述内容在官网手册没有出现清单,学习的时候能够间接查阅 requests 模块最新版的源码。

除 url 参数外,其余都为可选参数,即非必选。

url:申请地址;
params:要发送的查问字符串,能够为字典,列表,元组,字节;
data:body 对象中要传递的参数,能够为字段,列表,元组,字节或者文件对象;
json:JSON 序列化对象;
headers:申请头,字典格局;
cookies:传递 cookie,字段或 CookieJar 类型;
files:最简单的一个参数,个别呈现在 POST 申请中,格局举例 “name”: 文件对象 或者 {‘name’: 文件对象},还能够在一个申请中发送多个文件,不过个别爬虫场景不会用到;
auth:指定身份验证机制;
timeout:服务器期待响应工夫,在源码中检索到能够为元组类型,这个之前没有应用过,即 (connect timeout, read timeout);
allow_redirects:是否容许重定向;
proxies:代理;
verify:SSL 验证;
stream:流式申请,次要对接流式 API;
cert:证书。
以上内容就是 GET 申请中能够配置的参数,除了 GET 申请外,requests 还内置了其余的服务器申请形式,
这些办法须要的参数与上述清单统一。

GET, OPTIONS, HEAD, POST, PUT, PATCH, DELETE

在 Python 爬虫的实战当中,次要以 GET 与 POST 为主,
罕用的参数为:url,params,data,headers,cookies,timeout,proxies,verify。

响应对象的属性与办法
应用 requests 库申请之后,会失去一个 Response 对象,把握该对象的技巧就是理解其属性与办法,
通过 dir() 函数能够获取 Response 对象的属性和办法。

help(res)
print(dir(res))

获取到的内容如下所示,其中有咱们之前案例中常见的一些内容。

['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '其余内容自行查问']

如果只将 requests 库利用在爬虫采集畛域,那上述属性与办法中,比拟罕用的有:

属性 property

ok:只有状态码 status_code 小于 400,都会返回 True;
is_redirect:重定向属性;
content:响应内容,字节类型;
text:响应内容,Unicode 类型;
status_code:响应状态码;
url:响应的最终 URL 地位;
encoding:当拜访 r.text 时的编码;
办法

json():将响应后果序列化为 JSON;
会话对象
在本专栏后面的文章中,存在一个被疏忽的 requests 高级个性,即会话对象,
该对象可能在跨域申请的时候,放弃住某些参数,尤其是 cookie,如果你想向同一主机发送多个申请,
应用会话对象能够将底层的 TCP 连贯进行重用,从而带来显著的性能晋升。
会话对象应用非常简单,在发动 requests 对象之前,减少如下所示代码即可。

# 建设会话对象
s = requests.Session()
# 后续都应用会话对象进行进行,而不是间接应用 requests 对象
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)

因为专栏后面并未波及相干案例,故间接引入官网手册案例阐明。

下述代码演示的是 会话也可用来为申请办法提供缺省数据,顾名思义就是间接给会话对象减少的申请参数,
在后续代码中默认可用。

import requests
s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})

# both 'x-test' and 'x-test2' are sent
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})

print(r.text)

接下来官网案例还展现了 办法级别的参数也不会被跨申请放弃,即在 s.get() 办法中如果传递了 cookie,那不会被放弃住,
这两个案例,从侧面与背面为咱们外围展现的就是,如何应用会话对象放弃参数,
通过会话对象的属性设置的参数,能被放弃,而通过会话对象办法传递的参数,不能被放弃。

SSL 证书验证,客户端证书,CA 证书
在爬虫采集数据的过程中,碰到 https 的网站在失常不过,requests 库应用过程中 SSL 验证是默认开启的,
如果证书验证失败,即抛出 SSLError 谬误。

不过在实战的时候,咱们能够通过设置 verify = False,疏忽对 SSL 证书的验证。
局部场景无奈疏忽证书,必须减少相干证书逻辑。

代理
有的网站在采集过程中,会针对 IP 进行限度,此时就须要应用代理进行跳过操作,设置 proxies 参数即可,
本局部内容比较简单,后续很多案例还会复用到。

除了 HTTP 代理外,requests 2.10 版本之后,减少了 SOCKS 代理,如果你须要应用,须要通过 pip 装置相应库。

pip install requests[socks]

装置结束,呈现新的第三方库 PySocks,应用形式与 HTTP 代理统一。

Cookie
爬虫采集过程会大量的与 cookie 打交道,获取网站响应的 cookie,应用 response 对象的 cookies 属性即可。
如果心愿向服务器传递 cookie,能够通过 cookies 参数,例如下述代码:

url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)

如果你心愿对 cookie 有更加粗疏的操作,重点钻研 requests.cookies.RequestsCookieJar 对象即可,
简略的代码应用如下所示:

jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
print(r.text)

RequestsCookieJar 对象具备更加丰盛的接口,适宜跨域名跨门路应用,相干接口可在  https://docs.python-requests…. 查问。

requests 非常适合作为 Python 爬虫入门阶段第一抉择,其简略的接口与代码封装,能大幅度降低网络申请代码编写难度,
让你专一与指标数据的提取,更有基于高级申请的封装作为进步局部,该库齐全能够贯通你的整个爬虫工程师生涯。

进步场景
requests 模块目前在 Python 爬虫畛域的出场率极高,很多简略的接口开发,也会基于它进行实现,
因而,该模块非常重要,须要牢牢把握

以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注 Python 技术大本营,获取更多技能与教程。

正文完
 0