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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python requests 笔记(一)

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

Python requests

  • 添加 HTTP請求頭
  • 抓取二進制文件
  • 上傳文件
  • 設置Cookie
  • 設置同一個會話(Session)
  • 使用代理

添加 HTTP請求頭

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

  • quote :負責編碼
  • unqoute :負責解碼

例子:

import requests from urllib.parse import quote,unquote # 寫請求頭 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('李寧') } # 發送請求 r = requests.get('http://httpbin.org/get',headers = headers) # 輸出響應體 print(r.text) # 輸出name 請求頭的值(需要解碼) print('Name: ',unquote(r.json()['headers']['Name'])) ps:

請求頭中的鍵在響應體中,總是第一個英文字母大寫。不管你在代碼里寫是什么樣的。

如:

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

抓取二進制文件

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

代碼:

上傳文件

用requests上傳文件也是相當簡單的,只需指定post方法的files參數即可。files參數的值可以是Buffered Reader對象,該對象可以用Python語言的內置函數open返回。

代碼:

import requests from urllib.parse import quote,unquote # 寫請求頭 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('李寧') } # 發送請求 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 # 定義上傳的文件,字典中必須有一個key = file 的值,值類型是BfferedReader,可以用open函數返回 files1 = {'file':open('圖片1.png','rb')}r1 = requests.post('http://127.0.0.1:5000/',files = files1)print(r1.text)

設置Cookie

使用requests 就簡單得多,只需要使用cookies屬性就可以得到服務端發送過來的Cookie。設置Cookie也相當簡單。有如下2種方法設置Cookie,

  • headers參數。
  • cookies參數。
  • get和post方法都有這兩個參數,如果使用cookies參數,需要創建Requestookiar對象,并使用set方法設置每一個Cookie。

    在訪問某些網站時,只有登錄用戶才能獲得正常顯示的內容,所以一般的做法是先在網頁上登錄。

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

    最簡單就是將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......' }

    設置同一個會話(Session)

    在requests 中提供了Session 對象,可以無須用戶干預Cookie的情況下維持Session。通過Session對象的get、post等方法可以在同一個Session中向服務器發送請求。

    代碼:

    import requests#創建 Session 對象 session = requests.Session() # 其中 set/name/Bill 相當于向服務器寫入一個名為name 的Cookie # 第一次發送請求 session.get('http://httpbin.org/cookies/set/name/Bill') #第二次發送請求 r2 = session.get('http://httpbin.org/cookies') print(r2.text)

    使用代理

    requests使用代理發送請求非常容易,只需指定proxies參數即可,該參數是一個字典類型的值,每一對 key?value表示一個代理的協議,如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)

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。