requests是基於urllib庫編寫的http庫,官方的大標題是這麼寫的:
人性化的http?手動斜眼笑,總之官方文件寫的挺逗逼的,非常值得一看。當然這個庫的強大也足以對得起官方文件不遺餘力的吹捧。
官方文件:
官方中翻:
注意:優先看英文原版,因為它的版本總是最新的。
在使用requests之前,http的請求訪問我一直用python標準庫urllib,用的也是不亦樂乎。後來接觸了requests,urllib那是啥玩意兒,再也沒碰過了。不得不說,requests要更加pythonic。他的引數傳遞、請求頭定製、**、會話控制等功能都十分簡單易用,點讚!
直接pip安裝:pip install requests
當然,用python的人一定要知道乙個東西就是anacoda,常用的庫基本都涵蓋在裡面了,強推!
import requests
url = ''
r= requests.get(url)
r= requests.post(url)
r= requests.put(url)
r= requests.delete(url)
r= requests.head(url)
r= requests.options(url)
r = requests.get(url,params = ,headers = headers)
至於為啥大家的ua都是以mozilla/5.0
開頭,這又是一段有歷史淵源的故事,有興趣的朋友可以自行baidu/google。
payload =
r = requests.post(url,data = payload,headers = headers)
有的時候傳參並不是form形式的,需要以json形式傳遞,直接json.dumps(payload)
轉化成json即可,當然要事先import json
。
print(r.content) #以位元組的方式顯示,中文顯示為字元
print(r.text) #以文字的方式顯示,自動判定編碼格式(根據http頭部來猜測網頁編碼)
print(r.json()) #返回json內容,requests內建
有的時候r.text
自動判斷出來的編碼可能會出錯,不能正確顯示內容。這個時候可以使用r.encoding = 'utf-8'
來手動選擇編碼。當然,也可以print(r.encoding)
來獲取當前的編碼格式。
r = requests.get(url, timeout = 0.1)
r.cookie
可以直接拿到該響應中包含的cookie。
也可以自己傳遞cookie進去,像這樣:
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
上面出現的所有例子,每次請求都是發起了乙個新的請求,相當於每次都開啟了乙個瀏覽器單獨訪問。
如果我們需要保持乙個長久的會話,用以下**實現:
s = requests.session()
s.headers.update(headers)
cookie_dict =
cookie = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=none, overwrite=true)
s.cookies = cookie #會話也可以手動傳入cookie,但需要使用上述函式
r = s.get(url)
由於requests只能保持 cookiejar 型別的cookie,所以我們需要自己傳遞cookie時需要用專有函式將dict轉化成cookiejar 。
當然也有requests.utils.dict_from_cookiejar()
逆向該過程。
這樣就可以保留cookie發起新的請求,常用於登入帳號後可以在登入狀態繼續操作。
proxies =
r = requests.get(url, proxies=proxies)
如果**需要驗證:
proxies =
還有一些比較常用的功能:
r = requests.get(url)
#響應狀態碼,常用於判斷是否正確訪問到網頁內容
print(r.status_code)
#追蹤重定向
print(r.history)
response.history 是乙個 response 物件的列表,為了完成請求而建立了這些物件。這個物件列表按照從最老到最近的請求進行排序。
可以通過allow_redirects引數來關閉重定向,直接返回請求的內容:
>>> r = requests.get(url, allow_redirects=false)
>>> r.status_code
301>>> r.history
遇到網路問題(如:dns 查詢失敗、拒絕連線等)時,requests 會丟擲乙個 connectionerror 異常。
如果 http 請求返回了不成功的狀態碼, response.raise_for_status() 會丟擲乙個 httperror 異常。
若請求超時,則丟擲乙個 timeout 異常。
若請求超過了設定的最大重定向次數,則會丟擲乙個 toomanyredirects 異常。
所有requests顯式丟擲的異常都繼承自 requests.exceptions.requestexception 。
大名鼎鼎的BERT模型
bert是bidirectional encoder representations from transformers的縮寫,它是2018年谷歌團隊提出來的新型語言表徵模型 language representation model ps.它也是芝麻街的人物,就長下面這樣 為什麼說它是新型的呢?讓...
大名鼎鼎的malloc函式(動態記憶體分配)
原型 extern void malloc unsigned int num bytes 標頭檔案 在tc2.0中可以用malloc.h或 alloc.h 注意 alloc.h 與 malloc.h 的內容是完全一致的 而在visual c 6.0中可以用malloc.h或者stdlib.h。功能 ...
python 的基礎 學習 第三
1,in not in 判斷子元素是是否在原字串 字典,列表,集合 中,主要是用在檢測敏感字 print a in abcchhhhd 有則返回true,print j in abcchhhhd 沒有則返回false 主要是用在檢測敏感字 comment input while true if 血腥...