pip3 install requestsweb
res = requests.get(url,params) 獲取響應網頁對象,params以字典形式向url傳參,value值爲None不會傳入。json
import requests params = {'name':'km','age':22} headers = {'Server':'likun'} res = requests.get('http://httpbin.org/get',params=params,stream=True,headers=headers)
res.text 打印響應內容瀏覽器
res.encoding 當前響應使用的編碼,能夠從新賦值改變使用本身合適的編碼服務器
res.content 二進制響應內容cookie
res.json() json響應內容session
res.raw 獲取原始響應數據,需在get請求中加參數stream=Trueide
res.headers 獲取請求頭函數
res = requests.get(url,params,headers=headers) 本身添加請求頭post
res.cookies 獲取cookies性能
若是想發送cookies到服務器,能夠使用cookies參數
cookies = {'cookies_are':'working'} res = requests.get('http://httpbin.org/cookies',cookies=cookies) print(res.text) {"cookies": {"cookies_are": "working"}}
res.status_code 狀態碼
res.status_code == requests.codes_ok 內置的狀態碼查詢,200返回True
res.raise_for_status() 若是發送錯誤的4xx或5xx請求,能夠用這個函數拋出異常
res = requests.get('http://httpbin.org/status/404') print(res) res.raise_for_status()
requests.post(url,params) post傳數據
發送以表單形式的數據,data參數以字典形式上傳
data = {'key1':'value1','key2':'value2','key2':'value3'}#同一key值自動處理在一塊兒 res = requests.post('http://httpbin.org/post',data=data) { ... "form": { "key1": [ "value1", "value2" ] }, ... }
流式上傳,發送大文件時無需先把它們讀入內存。
with open('massive-body','rb') as f: requests.post('http://some.url/streamed',data=f)
res.request.post('http://httpbin.org/post',files=files) files二進制上傳
files = {'file':open('1.jpg','rb')} res = requests.post('http://httpbin.org/post',files=files)
證書驗證:Requests 能夠爲 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器同樣。SSL 驗證默認是開啓的,若是證書驗證失敗,Requests 會拋出 SSLError: requests.exceptions.SSLError 報錯。
也能夠爲verify傳入CA_BUNDLE 文件路徑,或者包含可信任 CA 證書文件的文件夾路徑:
改成False除去證書驗證
import requests from requests.packages import urllib3 urllib3.disable_warnings() #調用這個包消除警告信息 res = request.get('http://www.12306.cn',verify=False) print(res.status_code) 200
cert參數指定本地證書做爲客戶端證書,能夠是單個文件(包含密鑰和證書)或一個包含兩個文件路徑的元組:
requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key')) <Response [200]>
設置代理:proxies 參數設置代理ip
proxies = { 'http':'http://127.0.0.1:9743', 'https':'https://127.0.0.1:9743' } res = requests.get('http://www.taobao.com',proxies=proxies)
有用戶名的代理
proxies = {'http':'http://user:password@127.0.0.1:9743/'}
超時設置:timeout 參數
res = res = requests.get('http://www.taobao.com',timeout=1)
異常處理:requests.exceptions基類
會話對象,會話維持:會話對象能夠讓你保持鏈接狀態,跨站請求保持某些參數。它是一個Session實例,這個實例會在全部的請求之間保持cookie。因此若是你向同一主機發送多個請求,底層的TCP會被重用,從而帶來顯著地性能提高。
同一會話中的鏈接狀態都是持久的,urllib3自動處理
#跨站保持cookies import requests s = requests.Session() s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') res = s.get("http://httpbin.org/cookies") print(res.text) '{"cookies": {"sessioncookie": "123456789"}}'
s.headers.update({'x-test': 'true'})#添加新的值 res = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'}) { "headers": { "Accept-Encoding": "identity", "Connection": "close", "Cookie": "sessioncookie=123456789", "Host": "httpbin.org", "X-Test": "true", "X-Test2": "true" } }
持續更...