Hi,看這!!!博主的微信是qing_an_an,公眾號是Sea_Cha,歡迎一起入坑,
前面一篇我們講了介面測驗的理論加JSON的基本運用,,目前來說還是比較的簡單的,這一篇的基礎篇也還算簡單,我們一起來看看吧,
介面理論+JSON基礎
目錄
介紹
安裝requests
requests常用方法
基礎操作
GET請求
POST請求
TEXT與JSON的比較
圖片型別
介紹
requests是一個python的庫,通過簡單的api實作python對http請求的操作,多用于爬蟲或者介面測驗,
requests庫是用python撰寫的,基于urllib庫做的二次封裝,采用Apache2 Licensed開源協 議的HTTP庫;相比urllib庫,requests庫更加方便,可以節約我們大量的作業,完全滿足 HTTP測驗需求,
requests支持HTTP連接保持(keep-alive)和連接池,支持使用cookie保持會話,支持文 件上傳,支持自動確定回應內容的編碼,支持國際化的 URL 和 POST 資料自動編碼,
文字游戲介紹到這,我看直接看正文!!!
安裝requests
兩種方式:
1、requests -i https://pypi.douban.com/simple
驗證是否安裝成功pip show requests
2、直接在pycharm里面匯入import requests,把滑鼠移到上面去,點擊install自己會下載
requests常用方法
這里就一筆全部帶過了!!!
1. requests.get('https://www.baidu.com/get') #GET請求
2. requests.post('https://www.baidu.com/post') #POST請求
3. requests.put('https://www.baidu.com//put') #PUT請求(提交修改全部的資料)
4. requests.delete('https://www.baidu.com/delete') #DELETE請求
5. requests.requests(method,url, **kwargs) 以上方法都可以由requests()方法實作的,因此我 們也可以說requests()方法是最基本的
這里也就是各種請求的運用,我們接下來一一看例題,
基礎操作
import requests
res = requests.get(url='https://baidu.com')
print("url",res.url)
print("狀態碼:",res.status_code)
print("文本回應內容",res.text)
print("默認編碼格式",res.encoding)
# 修改編碼格式
res.encoding='utf-8'
print("修改后的編碼格式",res.encoding)
GET請求
在get請求后面加入數字與漢字
import requests
url='https://baidu.com'
res = requests.get(url,params='id=11001')
print(res.url)
輸出的結果是http://www.baidu.com/?id=1001,也有另一種接入方法:
import requests
url='https://baidu.com'
data = {'id':1001}
res = requests.get(url,data)
print(res.url)
你也可以接入多個引數,混合起來發送請求:
import requests
url='https://baidu.com'
data = {'id':'1001,1002','home':'深圳'}
res = requests.get(url,data)
print(res.url)
我們得到的是這樣的一個地址:http://www.baidu.com/?id=1001%2C1002&home=%E6%B7%B1%E5%9C%B3,home后面我們接的是深圳,但是看起來像是亂碼了,其實不是亂碼,我們只需要通過決議就能得到漢字,自行搜索UrlEncode進行解碼就好,
除此之外我們還可以換另外一種的寫法:
import requests
url='https://baidu.com'
data = {'id':'1001,1002','home':'深圳'}
res = requests.request('GET',url,params=data)
print(res.url)
POST請求
import requests
import json
url = 'http://api.test.zhulogic.com/designer_api/account/login_quick'
# 字典型別,需要轉換
d = {
"phone":1234568,
"code":1234,
"unionid":"",
"messageType":3,
"channel":"zhulogic"
}
# 1、將字典d轉為json型別
json_d = json.dumps(d)
h = {'Content-Type':'application/json'}
res = requests.post(url,data=json_d,headers=h)
print(res.text)
這里可以換一種將字典轉為JSON型別的寫法,為什么一定要替換,因為不替換會有夜歌error的報錯,具體是什么寶報錯,可以自己試試,這里的轉換就是:
res = requests.post(url,json=d,headers=h)
print(res.text)
亦或者直接干脆點跟get請求一樣:
import requests
import json
url = 'http://api.test.zhulogic.com/designer_api/account/login_quick'
# 字典型別,需要轉換
d = {
"phone":12345678,
"code":1234,
"unionid":"",
"messageType":3,
"channel":"zhulogic"
}
res = requests.request('POST',url,json=d,headers=h)
print("狀態碼:",res.status_code)
print(res.text)
這里我們想看到什么樣的資訊都可以列印,編碼格式,請求的地址,回應的狀態碼等,都是可以的,
TEXT與JSON的比較
回應物件.json:返還型別字典,可以通過鍵名來獲取回應的值
回應物件.text:返還型別為字串,無法通過鍵名方式來獲取回應的值
他們也有一個共同的特點就是長的比較像字典,但是取值的方式還是有明顯的不一樣的地方
import requests
import json
url = 'http://api.test.zhulogic.com/designer_api/account/login_quick'
d = {
"phone":12345678,
"code":1234,
"unionid":"",
"messageType":3,
"channel":"zhulogic"
}
h = {'Content-Type':'application/json'}
res = requests.request('POST',url,json=d,headers=h)
print(res.text)
print(res.json())
print(type(res.text)) # 字串型別
print(type(res.json())) # 字典型別
# 取值比較
print("TEXT:",res.text[1:3]) # 切片,很不方便
print("JSON:",res.json()['message'])
這樣就能很明顯的看出兩者的不一樣了,看看結果:
{"status_code":400,"message":"請輸入正確的手機號碼","data":null}
{'status_code': 400, 'message': '請輸入正確的手機號碼', 'data': None}
<class 'str'>
<class 'dict'>
TEXT: "s
JSON: 請輸入正確的手機號碼
圖片型別
這里就比較的特殊了,需要用到另一個方法content,我們直接訪問百度的圖片:https://www.baidu.com/img/flexible/logo/pc/result.png
import requests
import json
res = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
print(res.text)
這樣訪問出來的都是亂碼,比如:�PNGT?��w��E !�� "Y�J�啥的,一堆亂碼,但是你用了content就不一樣了,可以決議成一堆位元組碼,
import requests
import json
res = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
print(res.content)
如果沒復制錯的話,決議出來就是這樣的了,
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xca\x00\x00\x00B\x08\x06\x00\x00\x00\x16\x86I\x1d\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x19\x93IDATx\x01\xed]\r|T\xc5\xb5
這樣看著沒個圖片的樣子,我們給保存一下,以二進制的方式保存在當前的目錄下,
import requests
import json
res = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
with open('baidu.png','wb') as f:
f.write(res.content)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297889.html
標籤:其他
