Requests
- HTTP for Humans,更简洁更友好
- 继承了urllib的所有特征
- 底层使用的是urllib3
- 开源地址: 开源地址
- 中文文档: 中文文档
- 安装: conda install requests
- get请求
- requests.get(url)
- requests.request(“get”, url)
- 可以带有headers和parmas参数
import requests
url = "http://www.baidu.com"
# 两种请求方式
# 使用get请求
rsp = requests.get(url)
print(rsp.text)
# 使用request请求
rsp = requests.request("get", url)
print(rsp.text)
- get返回内容
'''
使用参数headers和params
研究返回结果
'''
import requests
# 完整访问url是下面url加上参数构成
url = "http://www.baidu.com/s?"
kw = {
"wd": "王八蛋"
}
headers = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36"
}
rsp = requests.get(url, params=kw, headers=headers )
print(rsp.text) # 返回主页html
print(rsp.content) # 返回bytes流
print(rsp.url) # 返回请求网址,编码后的
print(rsp.encoding) # 返回编码方式
print(rsp.status_code) # 请求返回码
-
post
-
rsp = requests.post(url, data=data)
-
date, headers要求dict类型
-
-
proxy
proxies = { "http":"address of proxy", "https": "address of proxy" } rsp = requests.request("get", "http:xxxxxx", proxies=proxies)
- 代理有可能报错,如果使用人数多,考虑安全问题,可能会被强行关闭
-
用户验证
-
代理验证
#可能需要使用HTTP basic Auth, 可以这样 # 格式为 用户名:密码@代理地址:端口地址 proxy = { "http": "china:123456@192.168.1.123:4444"} rsp = requests.get("http://baidu.com", proxies=proxy)
-
-
web客户端验证
-
如果遇到web客户端验证,需要添加auth=(用户名,密码)
autu=("test1", "123456")#授权信息 rsp = requests.get("http://www.baidu.com", auth=auth)
-
-
cookie
-
requests可以自动处理cookie信息
rsp = requests.get("http://xxxxxxxxxxx") # 如果对方服务器给传送过来cookie信息,则可以通过反馈的cookie属性得到 # 返回一个cookiejar实例 cookiejar = rsp.cookies #可以讲cookiejar转换成字典 cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
-
-
session
-
跟服务器端session不是一个东东
-
模拟一次会话,从客户端浏览器链接服务器开始,到客户端浏览器断开
-
能让我们跨请求时保持某些参数,比如在同一个session实例发出的 所有请求之间保持cookie
# 创建session对象,可以保持cookie值 ss = requests.session() headers = {"User-Agetn":"xxxxxxxxxxxxxxxxxx"} data = {"name":"xxxxxxxxxxx"} # 此时,由创建的session管理请求,负责发出请求, ss.post("http://www.baidu.com", data=data, headers=headers) rsp = ss.get("xxxxxxxxxxxx")
-
-
https请求验证ssl证书
-
参数verify负责表示是否需要验证ssL证书,默认是True
-
如果不需要验证ssl证书,则设置成False表示关闭
rsp = requests.get("https://www.baidu.com", verify=False) # 如果用verify=True访问12306,会报错,因为他证书有问题
-