Requests是Python語言的一個很是讚的第三方庫。相比較urllib,它的使用更加簡單。且,Requests模塊對於py2與py3都是完美兼容通吃的。python
Requests 繼承了urllib的全部特性。Requests支持HTTP鏈接保持和鏈接池,支持使用cookie保持會話,支持文件上傳,支持自動肯定響應內容的編碼,支持國際化的 URL 和 POST 數據自動編碼。服務器
通常,對於requests的安裝,我我的會比較習慣於安裝在一個獨立的虛擬環境中。 雖說,它對py2跟py3都很友好。cookie
進入咱們所須要安裝的環境中,而後執行如下命令:網絡
pip install requests
若是,你也與我同樣喜歡安裝到獨立的環境中,那必定要切記,不要使用sudo安裝,使用sudo會直接安裝到大環境中。ide
import request response = requests.get("http://www.baidu.com")
就是這樣,很簡單的一行代碼,咱們就獲得了一個請求頁面對象。編碼
import requests url = "https://www.baidu.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" } response = requests.get(url=url, headers=headers)
import requests # 這裏的 /s? 是指GET請求中,後面帶有請求參數 url = "https://www.baidu.com/s?" # 指定GET請求的參數,字典格式。 params = {"wd": "Python"} # 請求頭信息(還能夠添加其餘頭信息,都以K , V的格式添加到字典中) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" } response = requests.get(url=url, headers=headers, params=params) # 查看url print(response.url) # 查看響應頭部字符編碼 print (response.encoding) # 查看響應碼 print (response.status_code) # 查看響應內容,response.text 返回的數據,是根據服務器的編碼格式自動解析後的數據(不太穩定) print (response.text) # 查看響應內容,response.content返回的byes類型數據 print (respones.content) # 若是咱們想要返回的數據是字符串類型,那麼只須要decode一下就OK了 # decode(「編碼」)中,咱們能夠寫入編碼格式。(如:utf8, GBK等) print(response.content.decode())
使用response.text 時,Requests 會基於 HTTP 響應的文本編碼自動解碼響應內容,大多數 Unicode 字符集都能被無縫地解碼。url
使用response.content 時,返回的是服務器響應數據的原始二進制數據,咱們能夠用來保存圖片等二進制文件。code
import requests from io import BytesIO,StringIO import requests from PIL import Image img_url = "http://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png" response = requests.get(img_url) f = BytesIO(response.content) img = Image.open(f) print(img.size)
其輸出結果: (500, 262)對象
不少時候,數據讀寫不必定是文件,也能夠在內存中讀寫。繼承
顧名思義:
StringIO就是在內存中讀寫str。
BytesIO 就是在內存中讀寫bytes類型的二進制數據.
例子中若是使用StringIO 即f = StringIO(response.text)會產生"cannot identify image file"的錯誤。 固然上述例子也能夠把圖片存到本地以後再使用Image打開來獲取圖片大小。