requests进阶
基本POST请求(data参数)
1. 最基本post方法
response = requests.post("http://www.baidu.com/", data = data)
2. 传入data数据
对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data
这个参数。
import requests
formdata = {
"action": "FY_BY_CLICKBUTTION",
"bv": "20d61fc7e537da4985601dbf07f2a9f9",
"client": "fanyideskweb",
"doctype": "json",
"from": "AUTO",
"i": "love",
"keyfrom": "fanyi.web",
"salt": "15528492339058",
"sign": "29f45989d1491e03a2fe5d3beda8602d",
"smartresult": "dict",
"to": "AUTO",
"ts": "1552849233905",
"typoResult": "false",
"version": "2.1",
}
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
headers={
"Accept":"application/json, text/javascript, */*; q=0.01",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN",
"Cache-Control":"no-cache",
"Connection":"Keep-Alive",
"Content-Length":str(len(formdata)),
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Cookie":"OUTFOX_SEARCH_USER_ID=721421153@10.169.0.82; OUTFOX_SEARCH_USER_ID_NCOO=1383909470.6487217; JSESSIONID=aaap2j2rlgkbi7hxtbnMw; ___rl__test__cookies=1552849233904",
"Host":"fanyi.youdao.com",
"Referer":"http://fanyi.youdao.com/",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
"X-Requested-With":"XMLHttpRequest",}
response = requests.post(url, data = formdata, headers = headers)
print (response.text)
# 如果是json文件可以直接显示
print (response.json())
代理(proxies参数)
如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests
proxies= {
"http":"http://127.0.0.1:9999"
}
response = requests.get("https://www.baidu.com",proxies=proxies)
print(response.text)
如果代理需要设置账户名和密码,只需要将字典更改为如下:
proxies = {
"http":"http://user:password@127.0.0.1:9999"
}
认证设置
如果碰到需要认证的网站可以通过requests.auth模块实现
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))
print(response.status_code)
另一种方式:
import requests
response = requests.get("http://120.27.34.24:9001/",auth=("user","123"))
print(response.status_code)
Cookies 和 Session
获取cookie
import requests
response = requests.get("http://www.baidu.com")
print(response.cookies)
for key,value in response.cookies.items():
print(key+"="+value)
会话维持session
cookie的一个作用就是可以用于模拟登陆,做会话维持
import requests
# 创建session对象,可以保存Cookie值
s = requests.Session()
# 发送请求,并获取Cookie值保存在ssion里
s.get("http://httpbin.org/cookies/set/name/python")
response = s.get("http://httpbin.org/cookies")
print(response.text)
SSL证书验证
现在的很多网站都是https的方式访问,所以这个时候就涉及到证书的问题
import requests
response = requests.get("https://www.12306.cn/mormhweb/")
print(response.status_code)
如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError,默认的12306网站的证书是不合法的,这样就会提示如下错误
为了避免这种情况的发生可以通过verify=False即可
response = requests.get("https:/www.12306.cn",verify=False)