在之前的文章中我們一直用到的庫是 urllib.request,該庫已經包含了平常我們使用的大多數功能,但是它的 api 使用起來讓人感覺不太好,而 requests 自稱 「http for humans」,說明使用更簡潔方便。
requests 唯一的乙個非轉基因的 python http 庫,人類可以安全享用:)
requests 繼承了urllib2的所有特性。requests支援http連線保持和連線池,支援使用cookie保持會話,支援檔案上傳,支援自動確定響應內容的編碼,支援國際化的 url 和 post 資料自動編碼。
requests的文件非常完備,中文文件也相當不錯。requests能完全滿足當前網路的需求,支援python 2.6—3.5,而且能在python下完美執行。
安裝方式
利用 pip 安裝 或者利用 easy_install 都可以完成安裝:
$ pip install requests
$ easy_install requests
基本get請求(headers引數 和 parmas引數)
最基本的get請求可以直接用get方法
import requests
response = requests.get("")
# 也可以這麼寫
# response = requests.request("get", "")
print
(response)
新增 headers 和 查詢引數
如果想新增 headers,可以傳入headers引數來增加請求頭中的headers資訊。如果要將引數放在url中傳遞,可以利用 params 引數。
import requests
kw =
headers =
# params 接收乙個字典或者字串的查詢引數,字典型別自動轉換為url編碼,不需要urlencode()
response = requests.get(
"s?"
, params = kw, headers = headers)
# 檢視響應內容,response.text 返回的是unicode格式的資料
print
(response.text)
# 檢視響應內容,response.content返回的位元組流資料
print
(response.content)
print
(response.content.decode(
"utf-8"))
# 檢視完整url位址
print
(response.url)
# 檢視響應頭部字元編碼
print
(response.encoding)
# 檢視響應碼
print
(response.status_code)
使用response.text 時,requests 會基於 http 響應的文字編碼自動解碼響應內容,大多數 unicode 字符集都能被無縫地解碼。
使用response.content 時,返回的是伺服器響應資料的原始二進位制位元組流,可以用來儲存等二進位制檔案。
基本post請求(data引數)
對於 post 請求來說,我們一般需要為它增加一些引數。那麼最基本的傳參方法可以利用 data 這個引數。
import requests
data =
url =
""headers=
response = requests.post(url, data = data, headers = headers)
print
(response.text)
# 如果是json檔案可以直接顯示
print
(response.json(
))
執行結果:
[,][,]
**(proxies引數)
如果需要使用**,你可以通過為任意請求方法提供 proxies 引數來配置單個請求:
import requests
# 根據協議型別,選擇不同的**
proxies =
response = requests.get(
"", proxies = proxies)
print
(response.text)
私密**驗證(特定格式) 和 web客戶端驗證(auth 引數)
urllib.request 這裡的做法比較複雜,requests只需要一步:
import requests
# 如果**需要使用http basic auth,可以使用下面這種格式:
proxy =
response = requests.get(
"", proxies = proxy)
print
(response.text)
web客戶端驗證
如果是web客戶端驗證,需要新增 auth = (賬戶名, 密碼)
import requests
auth =
('test'
,'123456')
response = requests.get(
'', auth=auth)
print
(response.text)
cookies 和 sission
cookies
如果乙個響應中包含了cookie,那麼我們可以利用 cookies引數拿到:
import requests
response = requests.get(
"")# 7. 返回cookiejar物件:
cookiejar = response.cookies
# 8. 將cookiejar轉為字典:
cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
print
(cookiejar)
print
(cookiedict)
sission
在 requests 裡,session物件是乙個非常常用的物件,這個物件代表一次使用者會話:從客戶端瀏覽器連線伺服器開始,到客戶端瀏覽器與伺服器斷開。
會話能讓我們在跨請求時候保持某些引數,比如在同乙個 session 例項發出的所有請求之間保持 cookie 。
實現人人網登入
import requests
# 1. 建立session物件,可以儲存cookie值
ssion = requests.session(
)# 2. 處理 headers
headers =
# 3. 需要登入的使用者名稱和密碼
data =
# 4. 傳送附帶使用者名稱和密碼的請求,並獲取登入後的cookie值,儲存在ssion裡
ssion.post(
"", data=data)
# 5. ssion包含使用者登入後的cookie值,可以直接訪問那些登入後才可以訪問的頁面
response = ssion.get(
"")# 6. 列印響應內容
print
(response.text)
處理https請求ssl證書驗證
要想檢查某個主機的ssl證書,你可以使用 verify 引數(也可以不寫)
import requests
response = requests.get(
"", verify=
true
)# 也可以省略不寫
# response = requests.get("")
print
(response.text)
Python之requests的安裝
在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...
Python之requests的安裝
在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...
Python之requests的安裝
在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...