A02 - Requests庫基本使用

返回主頁

📄目錄

1 基本使用

1.1 Requests模塊介紹和安裝

作用:發送http請求,獲取響應數據

Requests模塊是第三方模塊,需要另外安裝

在Windows系統中,在系統python版本中安裝requests庫時,輸入以下代碼(不建議):

在Pycharm的項目python版本(即.venv)中安裝:

1.2 基本使用

python-logo

Requests基本格式:

⚠️ 響應內容有亂碼(如requests中文網站),這是因為requests模塊會自動尋求一種解碼方式去解碼

python-logo

requests.get中的參數:

具體例子:

python-logo

輸出結果:

2 響應的保存

2.1 使用requests庫保存圖片文件

python-logo

輸出結果(沒有結果會被顯示,但可以同目錄下找到新文件,即cpp_logo.png):

其中,wbb的意思是指以二進制模式開啟檔案(而非以文字形式),w的意思是以寫入模式開啟檔案,會建立新檔或覆蓋同名檔案

2.2 使用requests庫保存html文件

python-logo

輸出結果(沒有結果會被顯示,但可以同目錄下找到新文件,即google.html):

2.3 其他屬性

2.3.1 response.textresponse.content的區別

2.3.2 response.encoding指定編碼

python-logo

💡 response.encoding指定編碼,可以不用解碼

輸出結果:

2.3.3 其他

常用的屬性或方法含義
res.url獲取響應的url,有時候響應的url和請求的url並不一致
res.status_code響應狀態碼
res.request.headers響應對象的請求頭
res.headers響應頭
res.apparent_encoding如果是圖片,響應內容為二進制形式,所以沒有指定的編碼格式
res.request._cookies響應對象請求的cookie;返回CookieJar類型
res.cookies響應的cookie(經過了set-cookie動件;返回CookieJar類型)

python-logo

輸出結果:

3 headers請求

3.1 headers參數

headers參數接收字典形式的請求頭,請求頭字段名為key,值為value

python-logo

輸出結果:

3.2 User-Agent請求池

單一版本的瀏覽器請求過多,可能會被識別出來。為了達到爬蟲的目的,需要構建user-agent請求池

目的是防止反爬

python-logo

第1種構建User-Agent請求池的方式:

這樣構建User-Agent池,如果太多會很不方便

因此可以使用fake-useragent庫

python-logo

第2種構建User-Agent請求池的方式(但可能會出現異常):

4 帶參數的請求

4.1 瀏覽器發送請求的原理

  1. 構建請求

  2. 查找緩存(緩解服務器的壓力,增加性能)

  3. 準備ip地址和端口

  4. 等待TCP隊列

  5. 建立TCP連接

  6. 發送HTTP請求

瀏覽器會向服務器發送請求行,包括:

  1. 請求方法

  2. 請求url

  3. http協議

  4. ...

4.2 url傳參

https://www.google.com/search?q=%E7%B6%AD%E5%9F%BA%E7%99%BE%E7%A7%91&sca_esv=51b55862be512269&biw=1440&bih=727&sxsrf=AE3TifPQYetWqvG_LUJCLGxdYTvuDkaISg%3A1756276549673&ei=RaeuaOPxKODU1e8PvZPDwQI&ved=0ahUKEwijqPv-r6qPAxVgavUHHb3JMCgQ4dUDCBA&uact=5&oq=%E7%B6%AD%E5%9F%BA%E7%99%BE%E7%A7%91&gs_lp=Egxnd3Mtd2l6LXNlcnAiDOe2reWfuueZvuenkTIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgARI7hNQAFjYEXAAeAGQAQSYAfsDoAHLIqoBCzEuNi41LjEuMy4xuAEDyAEA-AEBmAIKoAKSEMICBRAuGIAEwgIIEAAYgAQYogTCAgsQLhiABBjRAxjHAcICBRAAGO8FwgIIEAAYogQYiQWYAwCSBwkxLjQuMi4yLjGgB4U6sgcJMS40LjIuMi4xuAeSEMIHBzAuNC41LjHIByM&sclient=gws-wiz-serp

上述為在google搜索「維基百科」顯示第一頁搜尋結果的url

可以清晰看到,字符串被當作url提交時,會被自動進行url編碼處理

「維基百科(明文)」被轉為%E7%B6%AD%E5%9F%BA%E7%99%BE%E7%A7%91(密文)

python-logo

輸出結果:

4.3 發送帶參數的請求

python-logo

例子(在google搜索「自由放任主義」):

如果想要在代碼中控制搜索的是什麼,就可以通過params攜帶參數字典。步驟如下:

  1. 構建請求參數字典

  2. 發送請求的時候帶上參數字典

python-logo

另一種方式只使用input:

python-logo

導航連結:

目的地超連結
首頁返回主頁
Python學習Python學習
上一篇A01 - 爬蟲基本介紹
下一篇A03 - 爬蟲案例:網易雲&百度貼吧