GitHub代碼練習地址:1.兩種簡單get請求方法:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac13_requests1.py 2.帶請求頭與參數的get請求:https://github.com/Neo-ML/Py ...
GitHub代碼練習地址:1.兩種簡單get請求方法:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac13_requests1.py
2.帶請求頭與參數的get請求:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac14_requests2.py
Requests-獻給人類
是urllib模塊的完美替換,二者功能基本相同
HTTP for Humans,更簡潔更友好
繼承了urllib的所有特征
底層使用的是urllib3
開源地址: https://github.com/requests/requests
中文文檔: http://docs.python-requests.org/zh_CN/latest/index.html
安裝: conda install requests
一、兩種get請求方法:
requests.get(url)
requests.request("get", url)
可以帶有headers和parmas參數來請求
二、requests下使用proxy代理
proxies = {
"http":"address of proxy",
"https": "address of proxy"
}
rsp = requests.request("get", "http:xxxxxx", proxies=proxies)
代理有可能報錯,如果使用人數多,考慮安全問題,可能會被強行關閉
用戶驗證
代理驗證
可能需要使用HTTP basic Auth, 可以這樣
格式為 用戶名:密碼@代理地址:埠地址
proxy = { "http": "china:[email protected]:4444"}
rsp = requests.get("http://baidu.com", proxies=proxy)
web客戶端驗證
如果遇到web客戶端驗證,需要添加auth=(用戶名,密碼)
autu=("test1", "123456")#授權信息
rsp = requests.get("http://www.baidu.com", auth=auth)
三、requests下的cookie與session以及ssl證書相關問題
cookie
requests可以自動處理cookie信息
rsp = requests.get("http://xxxxxxxxxxx")
如果對方伺服器給傳送過來cookie信息,則可以通過反饋的cookie屬性得到
返回一個cookiejar實例
cookiejar = rsp.cookies
可以講cookiejar轉換成字典
cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
session
跟伺服器端session不是一個東東
模擬一次會話,從客戶端瀏覽器鏈接伺服器開始,到客戶端瀏覽器斷開
能讓我們跨請求時保持某些參數,比如在同一個session實例發出的 所有請求之間保持cookie
創建session對象,可以保持cookie值
ss = requests.session()
headers = {"User-Agetn":"xxxxxxxxxxxxxxxxxx"}
data = {"name":"xxxxxxxxxxx"}
此時,由創建的session管理請求,負責發出請求,
ss.post("http://www.baidu.com", data=data, headers=headers)
rsp = ss.get("xxxxxxxxxxxx")
https請求驗證ssl證書
參數verify負責表示是否需要驗證ssL證書,預設是True
如果不需要驗證ssl證書,則設置成False表示關閉
rsp = requests.get("https://www.baidu.com", verify=False)
如果用verify=True訪問某些證書有問題的網站會報錯。