他叫 Kenneth Reitz,現就職于知名云服務提供商 DigitalOcean,曾是云計算平臺 Heroku 的 Python 架構師,目前 Github 上 Python 排行榜第一的用戶,(star 數超過了包括 google、tensorflow、django 等賬號)
但他被更多路人所熟知的,恐怕還是他從一名技術肥宅逆襲成為文藝高富帥的勵志故事:
看看他的個人主頁 www.kennethreitz.org 上的標簽除了程式員,還有攝影師、音樂家、演講者……不怪在社交媒體上被稱為“程式員屆的網紅”,
這里要特別注意:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!
然而,作為一個嚴肅的技術號,今天我們不是要八卦他的開掛人生,而是他的代表作品:Requests
(如果你還是想看八卦,給你個傳送門:誰說程式員不是潛力股?讓這位世界前五名的天才程式員來顛覆你三觀!)
Requests 自我定義為 HTTP for Humans:讓 HTTP 服務人類,或者說最人性化的 HTTP,言外之意,之前的那些 HTTP 庫太過繁瑣,都不是給人用的,(urllib 表示:怪我咯!)
盡管聽上去有些自大,但實際上它的的確確配得上這個評價,用過的都說好,我在文首搬出它的網紅作者,其實也僅僅是想吸引下你的眼球,然后告訴你,這真的是一個非常值得使用的庫,“提升8倍”雖是我胡謅的資料,開發效率的提升卻是杠杠滴,
我們先來看看它官網上的說法:
其他同樣非常值得推薦的東西,如 PyCharm、Anaconda 等,我在推薦完之后往往得寫上一些教程,并在后續不斷解答使用者的問題,
而 Requests 卻不同,它提供了官方中文檔案,其中包括了很清晰的“快速上手”和詳盡的高級用法和介面指南,以至于我覺得再把檔案里面內容搬運過來都是一種浪費,對于 Requests,要做的僅僅是兩件事:
- 告訴你有這樣一個工具,用來開發爬蟲很輕松
- 告訴你它的官方檔案很好,你去讀就可以了
到此為止,本篇的目的已經達到,不過為了更有說服力,以及照顧到一些暫時還不需要但以后可能會去看的同學,我還是再啰嗦幾句,演示下 Requests 的威力,
安裝
pip install requests 即可
請求網頁
import requests
r = requests.get('http://httpbin.org/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("https://www.baidu.com/img/bd_logo1.png")
with open('image.png', 'wb') as f:
f.write(r.content)
復制代碼
把回傳結果的 content 保存在檔案里就行了,
提交一個 POST 請求,同時增加請求頭、cookies、代理等資訊(此處使用的代理地址不是真實的,測驗代碼時需去掉):
import requests
url = 'http://httpbin.org/post'
cookies = dict(some_cookie='working')
headers = {'user-agent': 'chrome'}
proxies = {
'http':'http://10.10.1.10:3128',
'https':'http://10.10.1.10:1080',
}
data = {'key1': 'value1', 'key2': 'value2'}
r = requests.get(
url,
data=data,
cookies=cookies,
proxies=proxies,
headers=headers
)
print(r.text)
復制代碼
上述幾個配置,如果使用自帶的 urllib 庫,代碼要增加不少,
有時我們做爬蟲時,需要保持 cookie 一致,比如登錄后才可訪問的頁面,用 Session 會話物件就可以實作:
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)
復制代碼
另外提兩個常見小問題:
一個是關于 SSL,也就是 https 證書的問題,如果碰到 HTTPS 證書無效導致無法訪問的錯誤,可以嘗試加引數 verify=False 忽略:
r = requests.get('https://www.12306.cn/', verify=False)
print(r.text)
復制代碼
另一個是對于設定了自動跳轉的頁面,默認會跟隨跳轉(但僅限于控制域名跳轉,無法跟隨 js 跳轉),也可以加引數 allow_redirects=False 禁止:
r = requests.get('http://github.com/', allow_redirects=False)
print(r.status_code)
print(r.text)
復制代碼
上面兩個例子,把引數去掉試試看效果,
其他更多詳細內容不多說了,中文官網地址 cn.python-requests.org,順著看一遍,寫一遍,你就掌握這個爬蟲神器了,
最后注意:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156842.html
標籤:Python
