請求
請求方式

get請求
import requests request = requests.get("http://httpbin.org/get") print(request.text)
帶引數get請求
import requests #date 以字典形式 data =https://www.cnblogs.com/jifou/p/ { 'name':'germy', 'age':22 } response = requests.get("http://httpbin.org/get",params = data) print(response.text)
添加Headers
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } response = requests.get('http://www.zhihu.com/explore',headers = headers) print(response.text)
決議json
import requests import json response = requests.get("http://httpbin.org/get") print(type(response.text)) print(response.json()) print(json.loads(response.text)) print(type(json.loads(response.text))) print(type(response.json()))
獲取二進制資料
response = requests.get("http://github.com/favicon.ico") print(type(response.text),type(response.content)) print(response.text) print(response.content) import requests #注意檔案路徑要轉義字符 #二進制資料要以b的方式寫入寫出 response = requests.get("http://github.com/favicon.ico") with open(r'C:\Users\key\Desktop\py\favicon.ico','wb') as f: f.write(response.content) f.close()
基本post請求
import requests data = { 'name':'gemey', 'age':'22' } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } response = requests.post("http://httpbin.org/post", data = https://www.cnblogs.com/jifou/p/data, headers = headers) print(response.json())
回應 response屬性
import requests response = requests.get('http://www.jianshu.com') print(type(response.status_code), response.status_code) print(type(response.headers), response.headers) print(type(response.cookies), response.cookies) print(type(response.url), response.url) print(type(response.history), response.history)
狀態碼判斷
import requests response = requests.get('http://www.baidu.com') print(response.status_code) exit()if not response.status_code == 200 else print('Request successfully')
常見狀態碼:
-
100~199:表示服務器成功接收部分請求,要求客戶端繼續提交其余請求才能完成整個處理程序, -
200~299:表示服務器成功接收請求并已完成整個處理程序,常用200(OK 請求成功), 300~399:為完成請求,客戶需進一步細化請求,例如:請求的資源已經移動一個新地址、常用302(所請求的頁面已經臨時轉移至新的url)、307和304(使用快取資源),400~499:客戶端的請求有錯誤,常用404(服務器無法找到被請求的頁面)、403(服務器拒絕訪問,權限不夠),500~599:服務器端出現錯誤,常用500(請求未完成,服務器遇到不可預知的情況),
編碼
import requests response = requests.get('http://xxxxxxxxx.com') #查看編碼方式 print(response.encoding) #改變編碼方式 response.encoding = 'ISO-8859-1' #處理網頁源代碼亂碼 response.encoding = response.apparent_encoding
高級操作 檔案上傳
import requests #上傳檔案要以二進制模式打開檔案 files ={'files':open(r'C:\Users\key\Desktop\py\favicon.ico', 'rb')} response = requests.post('http://httpbin.org/post',files = files ) print(response.text)
獲取cookies
import requests response = requests.get('http://www.baidu.com') for key, value in response.cookies.items(): print(key+'='+value)
會話維持,用來模擬登陸
import requests s = requests.Session() s.get('http://httpbin.org/cookies/set/number/123456.') response = s.get('http://httpbin.org/cookies') print(response.text)
證書驗證
import requests from requests.packages import urllib3 urllib3.disable_warnings() #消除警告資訊 response = requests.get('http://www.12306.cn', verify = False) print(response.status_code) import requests response = requests.get('http://www.12306.cn', cert = (r'/xx/crt', r'/xx/xx')) print(response.status_code)
代理設定
import requests proxies = { 'http': 'http://127.0.0.1:9743', 'https': 'https://127.0.0.1:9743' } response =requests.get('http://www.baidu.com', proxies = proxies) import requests proxies = { 'http': 'http://user:[email protected]:9743/', } response =requests.get('http://www.baidu.com', proxies = proxies) import requests proxies = { 'http': 'socks5://127.0.0.1:9743', 'https': 'socks5://127.0.0.1:9743' } response =requests.get('http://www.baidu.com', proxies = proxies)
認證設定
import requests r = requests.get('http://xxxxxxxxx.com', auth = ('user', '123'))
例外處理
# 先捕捉子類例外,在捕捉父類例外 import requests from requests.exceptions import ReadTimeout, HTTPError, RequestException try: response = requests.get('http://xxxxxxxxx.com',timeout = 1) print(response.status_code) except ReadTimeout: print('timeout') except HTTPError: print('httperror') except RequestException: print('error')
更多操作參考官方檔案:https://requests.readthedocs.io/zh_CN/latest/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/33689.html
標籤:Python
