request基本使用及各種請(qǐng)求方式參數(shù)的示例
各種請(qǐng)求方式
pip3 install requests
>>> import requests
>>> r = requests.get('https://www.cnblogs.com')
>>> r = requests.post('https://www.cnblogs.com', data = {'key':'value'})
>>> r = requests.put('https://www.cnblogs.com', data = {'key':'value'})
>>> r = requests.delete('https://www.cnblogs.com')
>>> r = requests.head('https://www.cnblogs.com')
>>> r = requests.options('https://www.cnblogs.com')request各種參數(shù)
| 參數(shù) | 說(shuō)明 |
|---|---|
| params | 字典或字節(jié)序列,作為參數(shù)增加到url中 |
| data | 字典,字節(jié)序列或文件對(duì)象,作為request的內(nèi)容 |
| json | JSON格式的數(shù)據(jù),作為request的內(nèi)容 |
| headers | 字典,HTTP定制頭 |
| cookies | 字典或CookieJar, request中的cookie |
| auth | 元組,支持HTTp認(rèn)證功能 |
| files | 字典類(lèi)型,傳輸文件 |
| timeout | 設(shè)定超時(shí)時(shí)間,秒為單位 |
| proxies | 字典類(lèi)型,設(shè)定訪問(wèn)代理服務(wù)器,可以增加登錄認(rèn)證 |
| allow_redirects | 重定向開(kāi)關(guān),默認(rèn)為T(mén)rue |
| stream | 獲取內(nèi)容立即下載開(kāi)關(guān),默認(rèn)為T(mén)rue |
| verify | 認(rèn)證SSL證書(shū)開(kāi)關(guān),默認(rèn)為T(mén)rue |
| cert | 本地SSL證書(shū)路徑 |
request基本使用
import requests
response = requests.get('https://www.cnblogs.com/kermitjam/')
print(response.text)
print(respone.text) # 響應(yīng)體轉(zhuǎn)成str
print(respone.content) # 響應(yīng)體二進(jìn)制(圖片,視頻)
print(respone.status_code) # 響應(yīng)狀態(tài)碼
print(respone.headers) # 響應(yīng)頭
print(respone.cookies) # 服務(wù)端返回的cookie
print(respone.cookies.get_dict()) # 轉(zhuǎn)成字典
print(respone.cookies.items())
print(respone.url) # 當(dāng)次請(qǐng)求的地址
print(respone.history) # 如果有重定向,放到一個(gè)列表中.查看上一次請(qǐng)求從哪里來(lái)。(圖片防盜鏈)
print(respone.encoding) # 編碼方式
print(respone.iter_content()) # 視頻,圖片迭代取值
content-length # 查看下載前文件大小
response.iter_content() # 視頻,圖片迭代取值
with open("a.mp4",'wb') as f:
for line in response.iter_content():
f.write(line)
get請(qǐng)求攜帶參數(shù)
# 方式一:會(huì)轉(zhuǎn)碼,不推薦
response = requests.get('https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3')
# 方式二:推薦
response = requests.get('https://www.baidu.com/',params={'name':'美女','age':18})
get請(qǐng)求攜帶headers頭
respone = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
headers={
# 標(biāo)志,什么東西發(fā)出的請(qǐng)求,瀏覽器信息,django框架,從哪???(meta)
'User-Agent': 'request',
# 上一個(gè)頁(yè)面的地址,圖片防盜鏈
'Referer': 'xxx'
})
print(respone.status_code)
get請(qǐng)求攜帶cookie
帶cookie,隨機(jī)字符串(用戶(hù)信息:也代表session),不管后臺(tái)用的token認(rèn)證,還是session認(rèn)證
一旦登陸了,帶著cookie發(fā)送請(qǐng)求,表示登陸了(下單,12306買(mǎi)票,評(píng)論)
# 第一種方式
ret = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
headers={
'cookie': 'key3=value;key2=value',
})
# 第二種方式
ret = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
cookies={"islogin":"xxx"})
print(ret.status_code)
post請(qǐng)求攜帶數(shù)據(jù)(注冊(cè)、登錄)
# data:urlencoded編碼
ret = requests.post('http://127.0.0.1:8000/', data={'name': "jeff", 'age': 18})
# data:json編碼
import json
data = json.dumps({'name': "jeff", 'age': 18})
ret = requests.post('http://127.0.0.1:8000/', json=data)
print(ret)
# 注意:編碼格式是請(qǐng)求頭中帶的,所以可以手動(dòng)修改,在headers中改
session對(duì)象
# session對(duì)象
session=requests.session()
# 跟requests.get/post用起來(lái)完全一樣,但是它處理了cookie
# 假設(shè)是一個(gè)登陸,并且成功
res = session.post('http://127.0.0.1:8000/')
# # 再向該網(wǎng)站發(fā)請(qǐng)求,就是登陸狀態(tài),不需要手動(dòng)攜帶cookie
res = session.get("http://127.0.0.1:8000/")
print(res)
亂碼問(wèn)題
# 加載回來(lái)的頁(yè)面,打印出來(lái),亂碼(我們用的是utf8編碼),如果網(wǎng)站用gbk,
ret = requests.get('http://127.0.0.1:8000/')
ret.encoding='gbk' # 修改編碼
print(ret.apparent_encoding) # 當(dāng)前頁(yè)面的編碼
# ret.encoding = ret.apparent_encoding
print(ret.encoding)
print(ret.apparent_encoding)
解析json數(shù)據(jù)
# 返回?cái)?shù)據(jù),有可能是json格式,有可能是html格式
ret=requests.get('http://127.0.0.1:8000/')
# print(type(ret.text))
# print(ret.text)
a=ret.json()
print(a['name'])
print(type(a))
使用代理
代理簡(jiǎn)單解釋?zhuān)?/p>
代理其實(shí)就是一個(gè)中介,A和B本來(lái)可以直連,中間插入一個(gè)C,C就是中介。
#高匿:服務(wù)端,根本不知道我是誰(shuí)
#普通:服務(wù)端是能夠知道我的ip的
#http請(qǐng)求頭中:X-Forwarded-For:代理的過(guò)程
爬蟲(chóng)使用正向代理好處:
1.突破頻率限制。做個(gè)代理池,每次請(qǐng)求都是不同的Ip,服務(wù)器認(rèn)為是不同的用戶(hù)
2.不會(huì)封自己的ip。
正向代理即是客戶(hù)端代理, 代理客戶(hù)端, 服務(wù)端不知道實(shí)際發(fā)起請(qǐng)求的客戶(hù)端.
反向代理即是服務(wù)端代理, 代理服務(wù)端, 客戶(hù)端不知道實(shí)際提供服務(wù)的服務(wù)端
ret = requests.get('https://www.pearvideo.com/', proxies={'http': '47.115.54.89'})
print(type(ret.text))
print(ret.text)
上傳文件
# 爬蟲(chóng)用的比較少,后臺(tái)寫(xiě)服務(wù)
file = {'myfile': open("1.txt", 'rb')}
ret = requests.post('http://127.0.0.1:8000/', files=file)
print(ret.content)以上就是request基本使用及各種請(qǐng)求方式參數(shù)的示例的詳細(xì)內(nèi)容,更多關(guān)于request使用及請(qǐng)求方式參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python框架flask表單實(shí)現(xiàn)詳解
這篇文章主要介紹了python框架flask表單實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python中使用logging和traceback模塊記錄日志和跟蹤異常
今天小編就為大家分享一篇關(guān)于Python中使用logging和traceback模塊記錄日志和跟蹤異常,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
django admin后臺(tái)添加導(dǎo)出excel功能示例代碼
這篇文章主要介紹了django admin 后臺(tái)添加導(dǎo)出excel功能示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Python獲取excel的數(shù)據(jù)并繪制箱型圖和直方圖的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Python獲取excel的數(shù)據(jù)并繪制箱型圖和直方圖的相關(guān)資料,好的圖表能幫助我們深化數(shù)據(jù)的記憶點(diǎn),文中通過(guò)圖文以及代碼示例將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
基于Python實(shí)現(xiàn)加強(qiáng)版煙花
這篇文章主要為大家詳細(xì)介紹了如何利用Python制作一個(gè)加強(qiáng)版煙花景,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-02-02
一起來(lái)學(xué)習(xí)Python的元組和列表
這篇文章主要為大家詳細(xì)介紹了Python元組和列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
pandas按行按列遍歷Dataframe的三種方式小結(jié)
本文主要介紹了pandas按行按列遍歷Dataframe,主要介紹了三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

