请求库requests
1. Get请求相关参数
import requests
url = 'http://httpbin.org/get?name=bob' # 请求url,?后面拼接的是参数
params = {'name': 'nick','age': '18'} # 参数,与url上的参数同时存在,没有优先级,若key相同,则值以列表形式存在
cookies = {'xxx': 'xxx','yyy': 'yyy'} # cookie值,若headers中有cookie,则使用headers中的cookie
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36", # 若未设置User-Agent,则会检测为python请求
"Cookie": 'aaa=aaa;bbb=bbb'
}
proxies = {'http':'http://ip:端口'} # 代理地址,固定的格式,如果是https就用https
timeout = 0.5 # 设置超时时间,若请求超出时间则报错
allow_redirects = True # 重定向中使用,是否允许跳转
res = requests.get(url=url,headers=headers,params=params,cookies=cookies)
print(res.text)
2. Post请求相关参数
import requests
url = 'http://httpbin.org/post' # 请求url
data = {
'name': 'nick', # form数据
'age': '18',
}
json = {"sex":'man'} # json格式数据,如果有data时,json为null
files = {'file':open('a.txt','rt',encoding='utf8')} # 文件数据
cookies = {
'xxx': 'xxx',
'yyy': 'yyy'
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"Cookie": 'aaa=aaa;bbb=bbb'
}
timeout = 0.5 # 超时时间
allow_redirects = True # 是否允许重定向
res = requests.post(url=url, headers=headers, data=data,cookies=cookies,json=json,files=files)
print(res.text)
3. request请求
import requests
requests.request(method,url,**kwargs) # method为请求方式,url请求地址。get,post请求本质上是继承了request请求
4. 响应相关参数
import requests
r = requests.get(....)
r.url # 请求的url
r.text # 获得响应体文本信息
r.encoding = 'gbk' # 设置编码方式,用来解决乱码
r.content # 二进制信息
r.json # 相当于json.loads(r.text),若返回的不是json数据,会报错
r.status_code # 响应状态码
r.headers # 响应头
r.cookies # 拿cookie
r.history # 有重定向时,取到的是 [响应对象1,响应对象2...]
5. 自动保存cookie的请求
session = requests.session()
r = session.get(...) # 会将cookie保存在seesion中,发次发请求时会带上cookie
# 补充(保存cookie到本地)
import http.cookiejar as cookiejar
import requests
session = requests.session()
session.cookies = cookiejar.LWPCookieJar()
session.cookies.load(filename='cookie.txt') # 取cookie
res = session.get('http://www.baidu.com')
session.cookies.save(filename='cookie.txt') # 存cookie