response = requests.post("http://www.baidu.com/", data = data)
对于 POST 请求来讲,咱们通常须要为它增长一些参数。那么最基本的传参方法能够利用 data 这个参数。html
import requests formdata = { "type":"AUTO", "i":"i love python", "doctype":"json", "xmlVersion":"1.8", "keyfrom":"fanyi.web", "ue":"UTF-8", "action":"FY_BY_ENTER", "typoResult":"true" } url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartre sult=ugc&sessionFrom=null" headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} response = requests.post(url, data = formdata, headers = headers) print (response.text) # 若是是json文件能够直接显示 print (response.json())
运行结果python
{"type":"EN2ZH_CN","errorCode":0,"elapsedTime":3,"translateResult":[[{"src":"i love python","tgt":"我喜欢python"}]],"smartResult":{"type":1,"entries":["","肆文","","","高德纳","",""]}} {'type': 'EN2ZH_CN', 'errorCode': 0, 'elapsedTime': 3, 'translateResult': [[{'src': 'i love python', 'tgt': '我喜欢python'}]], 'smartResult': {'type': 1, 'entries': ['', '肆文', '', '', '高德纳', '', '']}}
若是须要使用代理,你能够经过为任意请求方法提供 proxies 参数来配置单个请求:web
import requests # 根据协议类型,选择不一样的代理 proxies = { "http": "http://12.34.56.79:9527", "https": "http://12.34.56.79:9527", } response = requests.get("http://www.baidu.com", proxies = proxies) print response.text
也能够经过本地环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理:json
export HTTP_PROXY="http://12.34.56.79:9527" xport HTTPS_PROXY="https://12.34.56.79:9527"
私密代理浏览器
import requests 若是代理须要使用HTTP Basic Auth,可使用下面这种格式: proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" } response = requests.get("http://www.baidu.com", proxies = proxy) print (response.text)
web客户端验证安全
若是是Web客户端验证,须要添加 auth = (帐户名, 密码)服务器
mport requests auth=('test', '123456') response = requests.get('http://192.168.199.107', auth = auth) print (response.text)
Cookiescookie
若是一个响应中包含了cookie,那么咱们能够利用 cookies参数拿到:session
import requests response = requests.get("http://www.baidu.com/") # 7\. 返回CookieJar对象: cookiejar = response.cookies # 8\. 将CookieJar转为字典: cookiedict = requests.utils.dict_from_cookiejar(cookiejar) print (cookiejar) print (cookiedict)
运行结果:post
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]> {'BDORZ': '27315'}
session
在 requests 里,session对象是一个很是经常使用的对象,这个对象表明一次用户会话:从客户端浏览器链接服务器开始,到客户端浏览器与服务器断开。
会话能让咱们在跨请求时候保持某些参数,好比在同一个 Session 实例发出的全部请求之间保持 cookie 。
Requests也能够为HTTPS请求验证SSL证书:
要想检查某个主机的SSL证书,你可使用 verify 参数(也能够不写)
import requests response = requests.get("https://www.baidu.com/", verify=True) # 也能够省略不写 # response = requests.get("https://www.baidu.com/") print (r.text)
运行结果:
<!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>百度一下,你就知道 ....
若是SSL证书验证不经过,或者不信任服务器的安全证书,则会报出SSLError,听说 12306 证书是本身作的:
来测试一下:
import requests response = requests.get("https://www.12306.cn/mormhweb/") print (response.text)
果真:
SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
若是咱们想跳过 12306 的证书验证,把 verify 设置为 False 就能够正常请求了。
r = requests.get("https://www.12306.cn/mormhweb/", verify = False)