日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python requests 笔记(一)

發(fā)布時(shí)間:2025/3/19 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python requests 笔记(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python requests

  • 添加 HTTP請(qǐng)求頭
  • 抓取二進(jìn)制文件
  • 上傳文件
  • 設(shè)置Cookie
  • 設(shè)置同一個(gè)會(huì)話(Session)
  • 使用代理

添加 HTTP請(qǐng)求頭

需要設(shè)置 get方法的headers參數(shù).該參數(shù)是一個(gè)字典類型的值,每一對(duì)key-value 就是一個(gè) Cookie。如果要設(shè)置中文,需要使用相關(guān)的函數(shù)進(jìn)行編碼與解碼,不過比urllib 和 urllib3 方便多了。

  • quote :負(fù)責(zé)編碼
  • unqoute :負(fù)責(zé)解碼

例子:

import requests from urllib.parse import quote,unquote # 寫請(qǐng)求頭 headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',# 將中文編碼'name' :quote('李寧') } # 發(fā)送請(qǐng)求 r = requests.get('http://httpbin.org/get',headers = headers) # 輸出響應(yīng)體 print(r.text) # 輸出name 請(qǐng)求頭的值(需要解碼) print('Name: ',unquote(r.json()['headers']['Name'])) ps:

請(qǐng)求頭中的鍵在響應(yīng)體中,總是第一個(gè)英文字母大寫。不管你在代碼里寫是什么樣的。

如:

'name' :quote('李寧') # 變成 Name :李寧'NaMe' :quote('李寧') # 也是變成 Name :李寧

抓取二進(jìn)制文件

一般獲取二進(jìn)制數(shù)據(jù)(圖片、視頻等),需要將數(shù)據(jù)保存到本地文件中。所以需要調(diào)用 Response.content 屬性獲得bytes形式的數(shù)據(jù)。

代碼:

上傳文件

用requests上傳文件也是相當(dāng)簡(jiǎn)單的,只需指定post方法的files參數(shù)即可。files參數(shù)的值可以是Buffered Reader對(duì)象,該對(duì)象可以用Python語言的內(nèi)置函數(shù)open返回。

代碼:

import requests from urllib.parse import quote,unquote # 寫請(qǐng)求頭 headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',# 將中文編碼# 'name' :quote('李寧') } # 發(fā)送請(qǐng)求 link = 'https://tse4-mm.cn.bing.net/th/id/OIP-C.a9A8bFqvNQ_iw7neprKWzwHaKH?w=206&h=282&c=7&o=5&dpr=1.25&pid=1.7' r = requests.get(link,headers = headers) print(r.text) with open('圖片1.png','wb') as f:f.write(r.content) import requests # 定義上傳的文件,字典中必須有一個(gè)key = file 的值,值類型是BfferedReader,可以用open函數(shù)返回 files1 = {'file':open('圖片1.png','rb')}r1 = requests.post('http://127.0.0.1:5000/',files = files1)print(r1.text)

設(shè)置Cookie

使用requests 就簡(jiǎn)單得多,只需要使用cookies屬性就可以得到服務(wù)端發(fā)送過來的Cookie。設(shè)置Cookie也相當(dāng)簡(jiǎn)單。有如下2種方法設(shè)置Cookie,

  • headers參數(shù)。
  • cookies參數(shù)。
  • get和post方法都有這兩個(gè)參數(shù),如果使用cookies參數(shù),需要?jiǎng)?chuàng)建Requestookiar對(duì)象,并使用set方法設(shè)置每一個(gè)Cookie。

    在訪問某些網(wǎng)站時(shí),只有登錄用戶才能獲得正常顯示的內(nèi)容,所以一般的做法是先在網(wǎng)頁上登錄。

    通過Chrome瀏覽器的開發(fā)者工具得到登錄后的Cookie(如圖5-8所示),然后將這些Cookie復(fù)制,放到文件或直接寫到程序中,當(dāng)客戶端請(qǐng)求這些網(wǎng)站時(shí),再將這些Cookie發(fā)送給服務(wù)端、這樣一來,盡管我們并不知道用戶名和密碼,但由于登錄標(biāo)識(shí)保存在Cookie中,所以給服務(wù)端發(fā)送了Cookie,
    就相當(dāng)于登錄了。

    最簡(jiǎn)單就是將Cookie 放到headers中

    headers = {'Host':'csdn.net/?spm=1011.2124.3001.4476','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73','Cookie':'uuid_tt_dd=10_37481955370-1625655302106-686916; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_37481955370-1625655302106-686916!5744*1*qq_39838607......' }

    設(shè)置同一個(gè)會(huì)話(Session)

    在requests 中提供了Session 對(duì)象,可以無須用戶干預(yù)Cookie的情況下維持Session。通過Session對(duì)象的get、post等方法可以在同一個(gè)Session中向服務(wù)器發(fā)送請(qǐng)求。

    代碼:

    import requests#創(chuàng)建 Session 對(duì)象 session = requests.Session() # 其中 set/name/Bill 相當(dāng)于向服務(wù)器寫入一個(gè)名為name 的Cookie # 第一次發(fā)送請(qǐng)求 session.get('http://httpbin.org/cookies/set/name/Bill') #第二次發(fā)送請(qǐng)求 r2 = session.get('http://httpbin.org/cookies') print(r2.text)

    使用代理

    requests使用代理發(fā)送請(qǐng)求非常容易,只需指定proxies參數(shù)即可,該參數(shù)是一個(gè)字典類型的值,每一對(duì) key?value表示一個(gè)代理的協(xié)議,如http、https等。

    代碼:

    import requestshesders = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36', 'Host':'jd.com' } proxies ={'http':'http://182.140.244.163:8118','https':'https://182.140.244.163:8118' }link = 'https://www.jd.com' r1 = requests.get(link,proxies = proxies,headers= hesders,verify=False) print(r1.text)

    總結(jié)

    以上是生活随笔為你收集整理的Python requests 笔记(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。