Requests
前言
pythonVersion: python3.6.5
Requests: 更人性化, 更优雅的请求库.
link: http://www.python-requests.org/en/master/
安装与使用
安装
win: pip install requests
linux: pip3 install requests
使用
简单的实例
import requests
# get method.
req_url = 'https://www.baidu.com'
resp_get = requests.get(req_url)
print(resp_get.text) # 打印源码.
# Or
# post method.
data = {
'name': 'lls',
'age': 18
}
resp_post = requests.post(url, data=data)
print(resp_post.text)
更多的选择
import requests
# get request.
req_url = 'https://www.baidu.com'
resp_get = requests.get(req_url)
resp_get.content # 返回bytes类型的response源代码.
resp_get.text # 返回response源代码.
resp_get.status_code # 返回request的http状态码.
resp_get.json() # 将response的json数据json化为py对象.
resp_get.headers # 返回request的headers.
resp_get.encoding # 返回response的encoding.
resp_get.url # 返回request的url.
resp_get.cookies # 返回response的cookiJar对象.
# post同上.
# get 带上参数请求.
params = {
'thing1': 'some',
'thing2': 'some'
}
resp_get = requests.get(req_url, params=params)
print(resp_get.url) # 运行可以看出url被方便的格式化了.
request参数
params: 接收一个字典类型的数据, 内容为请求要发送出去的数据.
resp.url
:https://www.baidu.com/?thing=some
headers: 接收一个字典类型的数据, 内容为定义请求的头文件信息.
- cookies: 接收一个字典类型的数据, 内容为定义的需要传递的cookies值.
- data: 接收一个字典类型的数据, 内容为需要发送的post数据.
proxies: 接收一个字典类型的数据, 内容是键为http, https的请求url.
- proxiesEg:
{'http': 'http://IP:PORT', 'https': 'https://IP:PORT'}
- proxiesEg:
timeout: 接收一个整型对象, 定义请求在多少时间内未完成请求则请求失败并报error.
- allow_redirect: 接收一个bool值即FalseORTrue, 定义请求是否进行重定向, 默认为True即允许重定向.
- verify: 接收一个bool值即FalseORTrue, 定义请求是否严格要求网站https的证书的安全性.
- https证书: 有时我们请求的https类型的网站的安全证书是私有的, 不是公认的.
- True: 表示严格要求证书是否为公认, 否则请求失败.
- False: 表示不要求证书的安全性.
session使用
从前面可以看出, 如果我们要请求某个网站就得发送get
或者post
请求, 并且每次的请求需要的数据都需要准备好, 前后多次的请求是不相关的.
那么session(会话)有什么用呢? 为了能让我们的请求有类型浏览器的某些功能的功能.
不需要每次请求都传递cookies或headers等.
import requests
session = requests.Session() # 创建对象.
# 请求一个网站.
session.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
resp = session.get('http://httpbin.org/cookies')
# 设置整个headers
session.headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
# 增加一条headers
session.headers.update({'x-test': 'true'})
print(resp.text)