目錄
??????1、requests庫(kù)使用的通用框架:
2、requests下載圖片
3、發(fā)送get / post 請(qǐng)求傳遞參數(shù):?
4、requests庫(kù)下載視頻,并顯示進(jìn)度
5、requests.session進(jìn)行登錄保持
5.1 requests.session的作用和使用場(chǎng)景
5.2 使用方法
基礎(chǔ)鏈接 :?01-python-request庫(kù)使用01
1、requests庫(kù)使用的通用框架:
import requests
# 定義一個(gè)通用方法:
def get_text_from_web(url):
headers = {
# 自己通過瀏覽器查找替換即可
"user-Agent":'Mozilla/5.0 (Wi、****** Safari/537.36'
}
try:
resp = requests.get(url,headers=headers,timeout=10)
resp.raise_for_status()
resp.encoding = resp.apparent_encoding
return resp.text
except Exception as e:
print("產(chǎn)生異常",e)
# 調(diào)用函數(shù):
res = get_text_from_web("https://api.xygeng.cn/one")
print(res)
2、requests下載圖片
# requests下載圖片.py --- 一次讀取,一次寫出
# 圖片地址:
import requests
img_url1 = "https://tppic.chinaz.net/files/default/imgs/2023-10-27/4d3b05335f9a07d4_big.jpg";
img_url2 = "https://tppic.chinaz.net/files/default/imgs/2023-07-24/07d49ae71be62266_big.jpg"
def downLoad_img(url):
fileName = url.split('/')[-1] # 獲取文件名字
headers = {
'user-Agent': "Mozill *** Chrome/120.0.0.0 Safari/537.36"
}
try:
resp = requests.get(url, headers=headers)
resp.raise_for_status() # 如果響應(yīng)不是200 拋異常
with open(fileName, 'wb') as fW:
fW.write(resp.content)
except Exception as e:
print('拋出異常:', e)
finally:
print("下載完畢:",fileName)
# 下載兩張圖片:
downLoad_img(img_url1)
downLoad_img(img_url2)
print("執(zhí)行完畢")
3、發(fā)送get / post 請(qǐng)求傳遞參數(shù):?
get請(qǐng)求攜帶數(shù)據(jù)使用params參數(shù)配置:
# 06-requests帶參數(shù).py --- 發(fā)送get請(qǐng)求
import requests
url = ""
headers={}
params = {} #使用params傳遞參數(shù)
requests.get(url,headers= "",params=params)
post請(qǐng)求攜帶數(shù)據(jù)使用data參數(shù)配置:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-809988.html
# 06-requests帶參數(shù).py --- 發(fā)送post請(qǐng)求
import requests
url = ""
headers = {}
data = {} # 使用data參數(shù)傳遞字典
requests.post(url, headers="", data=data)
4、requests庫(kù)下載視頻,并顯示進(jìn)度
# time: 2024/1/12 15:01
# author: keep_di
# 07-requests下載視頻.py
# 視頻地址: 使用圖片測(cè)試, 注意修改User-Agent 再運(yùn)行!
import requests
urlVideo = 'https://tppic.chinaz.net/files/default/imgs/2023-07-24/07d49ae71be62266_big.jpg'
def downVideo(url, ):
headers = {
"User-Agent": 'Mozilla/ **** Safari/537.36'}
fileName = url.split('/')[-1]
try:
respVideo = requests.get(url, headers=headers, stream=True)
respVideo.raise_for_status()
contentLength = int(respVideo.headers['content-length'])
print(f'視頻的字節(jié)為{contentLength}')
buffer_size = 1024 * 8 # 緩存大小,每次讀取的字節(jié)數(shù)
size_downloaded = 0
with open(fileName, 'wb') as fp:
for data in respVideo.iter_content(buffer_size):
fp.write(data) # 向文件中寫入數(shù)據(jù)
size_downloaded += len(data) # 統(tǒng)計(jì)已下載數(shù)據(jù)大小
# 格式化顯示小數(shù)點(diǎn)后兩位
print(f'當(dāng)前的下載進(jìn)度:{size_downloaded / contentLength * 100:.2f}%')
print("下載完成 :" + fileName)
except Exception as e:
print("拋出異常:", e)
downVideo(urlVideo)
5、requests.session進(jìn)行登錄保持
requests模塊中的session類能夠自動(dòng)處理發(fā)送請(qǐng)求獲取響應(yīng)過程中產(chǎn)生的cookie,進(jìn)而達(dá)到狀態(tài)保持目的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-809988.html
5.1 requests.session的作用和使用場(chǎng)景
- 作用:自動(dòng)處理cookie,即 下一次請(qǐng)求會(huì)帶上前一次的cookie;
- 場(chǎng)景:先登錄,再請(qǐng)求的url地址;登錄就使用session去請(qǐng)求,登錄成功session就保存了登錄狀態(tài);
- 注意:session對(duì)象和requests對(duì)象的參數(shù)要求完全一致;
5.2 使用方法
# 08-requests的登錄保持.py
import requests
session = requests.session() # 獲取session對(duì)象
# 先使用session請(qǐng)求一次,這樣cookie就自動(dòng)保存在了session中!
session.get("url",headers={},...)
# 再請(qǐng)求,就不需要攜帶cookie參數(shù)了!
resp = session.get('url',data={},...)
到了這里,關(guān)于python爬蟲03-request庫(kù)使用02的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!