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)