python實現http get請求


  • 接口請求方式為get請求,如下圖抓包查看

 

  • Python實現腳本請求接口並以中文打印接口返回的數據
 1 import urllib.parse
 2 import urllib.request
 3 
 4 url = "https://..../manage/region/list"
 5 
 6 # 定義請求數據,並且對數據進行賦值
 7 values={}
 8 values['status']= 'hq'
 9 values['token']= 'C6AD7DAA24BAA29AE14465DDC0E48ED9'
10 
11 # 對請求數據進行編碼
12 data = urllib.parse.urlencode(values).encode('utf-8')
13 print(type(data))   # 打印<class 'bytes'>
14 print(data)         # 打印b'status=hq&token=C6AD7DAA24BAA29AE14465DDC0E48ED9'
15 
16 # 若為post請求以下方式會報錯TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.
17 # Post的數據必須是bytes或者iterable of bytes,不能是str,如果是str需要進行encode()編碼
18 data = urllib.parse.urlencode(values)
19 print(type(data))   # 打印<class 'str'>
20 print(data)         # 打印status=hq&token=C6AD7DAA24BAA29AE14465DDC0E48ED9
21 
22 # 將數據與url進行拼接
23 req = url + '?' + data
24 # 打開請求,獲取對象
25 response = urllib.request.urlopen(req)
26 print(type(response))  # 打印<class 'http.client.HTTPResponse'>
27 # 打印Http狀態碼
28 print(response.status) # 打印200
29 # 讀取服務器返回的數據,對HTTPResponse類型數據進行讀取操作
30 the_page = response.read()
31 # 中文編碼格式打印數據
32 print(the_page.decode("unicode_escape"))

 

  • 執行腳本,接口返回數據

 

  • 使用到的函數

urllib.parse.urlencode() 把key-value這樣的鍵值對轉換成a=1&b=2這樣的字符串

urllib.request.urlopen() 打開指定的url,就是進行get請求

response.read() 讀取HTTPResponse類型數據

 

  • 腳本執行過程報錯記錄,requests爬蟲時開啟代理會報以下錯誤

requests.exceptions.SSLError: HTTPSConnectionPool(host='api.****.cn', port=443):Max retries exceeded with url: //manage/region/list (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM