一、requests的使用
安裝:pip install requests
get請求
1、發送 get 請求
import requests
header = {
'referer': 'https://www.baidu.com'
}
# 請求并獲取回傳結果
re = requests.get('https://t7.baidu.com/it/u=1951548898,3927145&fm=193', headers=header)
2、請求中攜帶資料
# 第一種:中文會被編碼
ret = requests.get('https://www.baidu.com/s?wd=小楊')
# 第二種:會自動進行編碼(推薦)
ret = requests.get('https://www.baidu.com/', params={'wd': '小楊'})
3.請求中攜帶cookie
# 方式一:在header中放入cookie
header = {
'referer': 'https://www.baidu.com',
'cookie':'key=qeinpkdi;key2=laisdno;key3=winqcl'
}
ret = requests.get('http://127.0.0.1', headers=header)
# 方式二:cookies是一個字典或者CookieJar物件
ret = requests.get('http://127.0.0.1', cookies={'key': 'insidns'})
post請求
post 請求和 get 請求大致都是一樣的:
1、發送post請求,攜帶資料
ret = requests.post('http://127.0.0.1', data=https://www.cnblogs.com/XiaoYang-sir/archive/2021/08/19/{'name': '小楊'})
2、自動攜帶cookie
session = requests.session()
res = session.post('http://127.0.0.1/login/') # 假設這個請求登錄了
ret = session.get('http://127.0.0.1/index/') # 現在不需要手動帶cookie,session會自己處理
response回應物件
也就是請求后回應的物件
1、查看回應資訊
response=requests.post('http://127.0.0.1:8000/index/',data=https://www.cnblogs.com/XiaoYang-sir/archive/2021/08/19/{'name':'xiaoyang'})
print(response.text) # 回應的文本
print(response.content) # 回應體的二進制
print(response.status_code) # 回應狀態碼
print(response.headers) # 回應頭
print(response.cookies) # cookie
print(response.cookies.get_dict()) # 把cookie轉成字典
print(response.cookies.items()) # key和value
print(response.url) # 請求的url
print(response.history) # []放重定向之前的地址
print(response.encoding) # 回應的編碼方式
response.iter_content() # 圖片,視頻,大檔案,可以以一點一點回圈取出來
# 例如:
with open('a.jpg', 'wb') as f:
for line in response.iter_content():
f.write(line)
2、編碼問題
ret = requests.get('http://127.0.0.1')
# 如果列印出來的是亂碼
# 方式一:可以從HTML標簽meta中查看在encoding
ret.encoding='gb2312'
# 方式二:自動去HTML標簽中查,不用自己去查
ret.encoding=ret.apparent_encoding
3、決議 JSON
ret = requests.get('http://127.0.0.1')
# 方式一:自己決議的情況下
import json
json.loads(ret.text)
# 方式二:
ret.json()
高級用法
1、SSL證書驗證
https 的請求,會先檢查證書是否合法,不合法就報錯,
# 去掉報錯,但是會報警告
ret = requests.post('https://127.0.0.1', verify=False) # 不驗證證書,報警告,回傳200
# 去掉報錯,并且去掉報警資訊
from requests.packages import urllib3
urllib3.disable_warnings() # 關閉警告
respone=requests.get('https://127.0.0.1', verify=False)
# 使用證書,需要手動攜帶
ret = requests.post('https://127.0.0.1',
cert=('/path/server.crt',
'/path/key'
)
)
2、使用代理
# 格式:
respone=requests.get('http://127.0.0.1:8000/index/',proxies={'http':'代理的地址和埠號',})
# 代理池:串列放了一堆代理ip,每次隨機取一個,再發請求就不會封ip了
# 如果使用高匿代理,后端無論如何拿不到你的ip,使用透明,后端能夠拿到你的ip
# 后端可以通過 X-Forwarded-For 拿到透明代理的ip,
respone=requests.get('https://www.baidu.com/',proxies={'http':'27.46.20.226:8888',})
3、超時設定
respone=requests.get('https://www.baidu.com',
timeout=0.0001)
4、檔案上傳
res=requests.post('http://127.0.0.1',files={'myfile':open('a.jpg','rb')})
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294842.html
標籤:其他
上一篇:微服務架構如何避免大規模故障?
