高效爬蟲庫requests簡介

2021-08-31 19:04:12 字數 3112 閱讀 9961

他叫 kenneth reitz。現就職於知名雲服務提供商 digitalocean,曾是雲計算平台 heroku 的 python 架構師,目前 github 上 python 排行榜第一的使用者。(star 數超過了包括 google、tensorflow、django 等賬號)

看看他的個人主頁 www.kennethreitz.org 上的標籤:

除了程式設計師,還有攝影師、**家、演講者……不怪在社交**上被稱為「程式設計師屆的網紅」。

然而,作為乙個嚴肅的技術號,今天我們不是要八卦他的開掛人生,而是他的代表作品:requests

(如果你還是想看八卦,給你個傳送門:誰說程式設計師不是潛力股?讓這位世界前五名的天才程式設計師來顛覆你三觀!

)requests 自我定義為http for humans讓 http 服務人類,或者說最人性化的 http。言外之意,之前的那些 http 庫太過繁瑣,都不是給人用的。(urllib 表示:怪我咯!)

儘管聽上去有些自大,但實際上它的的確確配得上這個評價,用過的都說好。我在文首搬出它的網紅作者,其實也僅僅是想吸引下你的眼球,然後告訴你,這真的是乙個非常值得使用的庫。「提公升8倍」雖是我胡謅的資料,開發效率的提公升卻是槓槓滴。

我們先來看看它官網上的說法:

而 requests 卻不同,它提供了官方中文文件,其中包括了很清晰的「快速上手」和詳盡的高階用法和介面指南。以至於我覺得再把文件裡面內容搬運過來都是一種浪費。對於 requests,要做的僅僅是兩件事:

告訴你有這樣乙個工具,用來開發爬蟲很輕鬆告訴你它的官方文件很好,你去讀就可以了

到此為止,本篇的目的已經達到。不過為了更有說服力,以及照顧到一些暫時還不需要但以後可能會去看的同學,我還是再囉嗦幾句,演示下 requests 的威力。

安裝

pip install requests即可

請求網頁

import

requestsr=

requests

.get

('')print(r

.status_code

)print(r

.encoding

)print(r

.text

)print(r

.json

())

只需一行**就可以完成 http 請求。然後輕鬆獲取狀態碼、編碼、內容,甚至按 json 格式轉換資料。雖然這種簡單請求用別的庫也不複雜,但其實在內部,requests 已幫你完成了新增 headers、自動解壓縮、自動解碼等操作。寫過課程中「查天氣」的同學,很可能踩過 gzip 壓縮的坑,用 requests 就不存在了。如果你發現獲取的內容編碼不對,也只需要直接給 encoding 賦值正確的編碼後再訪問 text,就自動完成了編碼轉換,非常方便。

r

=requests

.get

("")with

open

('image.png'

,'wb')as

f:f.

write(r

.content

)

把返回結果的 content 儲存在檔案裡就行了。

import

requests

url=

''cookies

=dict

(some_cookie

='working'

)headers

=proxies

=data=r

=requests

.get

(url

,data

=data

,cookies

=cookies

,proxies

=proxies

,headers

=headers

)print(r

.text

)

上述幾個配置,如果使用自帶的 urllib 庫,**要增加不少。

有時我們做爬蟲時,需要保持 cookie 一致,比如登入後才可訪問的頁面。用session 會話物件就可以實現:

s

=requests

.session()s

.get

('')r

=s.get

("")print(r

.text

)

另外提兩個常見小問題:

乙個是關於ssl,也就是 https 證書的問題。如果碰到 https 證書無效導致無法訪問的錯誤,可以嘗試加引數verify=false忽略:

r

=requests

.get

('',verify

=false

)print(r

.text

)

另乙個是對於設定了自動跳轉的頁面,缺省會跟隨跳轉(但僅限於控制網域名稱跳轉,無法跟隨 js 跳轉),也可以加引數allow_redirects=false禁止:

r

=requests

.get

('',allow_redirects

=false

)print(r

.status_code

)print(r

.text

)

上面兩個例子,把引數去掉試試看效果。

其他更多詳細內容不多說了,中文官網位址 cn.python-requests.org,順著看一遍,寫一遍,你就掌握這個爬蟲神器了。

對了,作者今年又發布了個新的庫 requests-html: html parsing for humans,用來對抓取到的 html 文字進行處理。這是要把 bs4 也一併乾掉的節奏啊。現在更新到 0.9 版本,密切關注中。

如何自學python | 新手引導 | 精選

python

問答 | python單詞表 | 區塊鏈 | 人工智慧 | 雙11 | 嘻哈 | 爬蟲 | 排序演算法 | 我用python | 高考 | 世界盃

利用requests庫進行爬蟲簡介

其實最常使用的方式也就事 get 和 post 分別用於獲取和上傳,即分別用於資料性 和檢索性 get簡單粗暴,就介紹一下post post 請求 通常,你想要傳送一些編碼為表單形式的資料 非常像乙個 html 表單。要實現這個,只需簡單地傳遞乙個字典給 data 引數。你的資料字典在發出請求時會自...

爬蟲入門 Requests庫

首先用管理員許可權開啟cmd命令列,然後直接輸入 pip install requests,即可安裝成功 需要聯網 方法 作用requests.request 構造乙個請求,它是支撐以下方法的基礎方法 requests.get 獲取html網頁的主要方法,請求獲取url位置的資源 requests....

資料爬蟲 requests庫

import requests response requests.get 模擬瀏覽器,欺騙瀏覽器,獲取和瀏覽器一致的內容。url headers requests.get url,headers headers url問號後面的就是請求引數,也叫查詢字串。kw response requests....