成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

這個(gè)男人讓你的爬蟲開發(fā)效率提升8倍

Jackwoo / 2889人閱讀

摘要:提升倍雖是我胡謅的數(shù)據(jù),開發(fā)效率的提升卻是杠杠滴。而卻不同,它提供了官方中文文檔,其中包括了很清晰的快速上手和詳盡的高級用法和接口指南。其他更多詳細(xì)內(nèi)容不多說了,中文官網(wǎng)地址,順著看一遍,寫一遍,你就掌握這個(gè)爬蟲神器了。

他叫 Kenneth Reitz。現(xiàn)就職于知名云服務(wù)提供商 DigitalOcean,曾是云計(jì)算平臺 Heroku 的 Python 架構(gòu)師,目前 Github 上 Python 排行榜第一的用戶。(star 數(shù)超過了包括 google、tensorflow、django 等賬號)

但他被更多路人所熟知的,恐怕還是他從一名技術(shù)肥宅逆襲成為文藝高富帥的勵(lì)志故事:

看看他的個(gè)人主頁 www.kennethreitz.org 上的標(biāo)簽:

除了程序員,還有攝影師、音樂家、演講者……不怪在社交媒體上被稱為“程序員屆的網(wǎng)紅”。

然而,作為一個(gè)嚴(yán)肅的技術(shù)號,今天我們不是要八卦他的開掛人生,而是他的代表作品: Requests

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

*

Requests 自我定義為 HTTP for Humans讓 HTTP 服務(wù)人類 ,或者說最人性化的 HTTP。言外之意,之前的那些 HTTP 庫太過繁瑣,都不是給人用的。(urllib 表示:怪我咯?。?/p>

盡管聽上去有些自大,但實(shí)際上它的的確確配得上這個(gè)評價(jià),用過的都說好。我在文首搬出它的網(wǎng)紅作者,其實(shí)也僅僅是想吸引下你的眼球,然后告訴你,這真的是一個(gè)非常值得使用的庫?!疤嵘?倍”雖是我胡謅的數(shù)據(jù),開發(fā)效率的提升卻是杠杠滴。

我們先來看看它官網(wǎng)上的說法:

其他同樣非常值得推薦的東西,如 PyCharm、Anaconda 等,我在推薦完之后往往得寫上一些教程,并在后續(xù)不斷解答使用者的問題。

而 Requests 卻不同,它提供了官方中文文檔,其中包括了很清晰的“快速上手”和詳盡的高級用法和接口指南。以至于我覺得再把文檔里面內(nèi)容搬運(yùn)過來都是一種浪費(fèi)。對于 Requests,要做的僅僅是兩件事:

告訴你有這樣一個(gè)工具,用來開發(fā)爬蟲很輕松

告訴你它的官方文檔很好,你去讀就可以了

到此為止,本篇的目的已經(jīng)達(dá)到。不過為了更有說服力,以及照顧到一些暫時(shí)還不需要但以后可能會(huì)去看的同學(xué),我還是再啰嗦幾句,演示下 Requests 的威力。
安裝

pip install requests 即可

請求網(wǎng)頁


 import requests
r = requests.get("http://httpbin.org/get")
print(r.status_code)
print(r.encoding)
print(r.text)
print(r.json())

只需一行代碼就可以完成 HTTP 請求。然后輕松獲取狀態(tài)碼、編碼、內(nèi)容,甚至按 JSON 格式轉(zhuǎn)換數(shù)據(jù)。雖然這種簡單請求用別的庫也不復(fù)雜,但其實(shí)在內(nèi)部,Requests 已幫你完成了 添加 headers、自動(dòng)解壓縮、自動(dòng)解碼 等操作。寫過課程中“查天氣”的同學(xué),很可能踩過 gzip 壓縮的坑,用 Requests 就不存在了。如果你發(fā)現(xiàn)獲取的內(nèi)容編碼不對,也只需要直接給 encoding 賦值正確的編碼后再訪問 text,就自動(dòng)完成了編碼轉(zhuǎn)換,非常方便。

想要 下載一張圖片


r = requests.get("https://www.baidu.com/img/bd_logo1.png")
with open("image.png", "wb") as f:
    f.write(r.content)

把返回結(jié)果的 content 保存在文件里就行了。

提交一個(gè) POST 請求 ,同時(shí)增加 請求頭、cookies、代理 等信息(此處使用的代理地址不是真實(shí)的,測試代碼時(shí)需去掉):


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)

上述幾個(gè)配置,如果使用自帶的 urllib 庫,代碼要增加不少。

有時(shí)我們做爬蟲時(shí),需要保持 cookie 一致,比如登錄后才可訪問的頁面。用 Session 會(huì)話對象 就可以實(shí)現(xiàn):


s = requests.Session()
s.get("http://httpbin.org/cookies/set/sessioncookie/123456789")
r = s.get("http://httpbin.org/cookies")
print(r.text)

另外提兩個(gè)常見小問題:
一個(gè)是關(guān)于 SSL ,也就是 https 證書的問題。如果碰到 HTTPS 證書無效導(dǎo)致無法訪問的錯(cuò)誤,可以嘗試加參數(shù) verify=False 忽略:


r = requests.get("https://www.12306.cn/", verify=False)
print(r.text)

另一個(gè)是對于設(shè)置了 自動(dòng)跳轉(zhuǎn) 的頁面,默認(rèn)會(huì)跟隨跳轉(zhuǎn)(但僅限于控制域名跳轉(zhuǎn),無法跟隨 js 跳轉(zhuǎn)),也可以加參數(shù) allow_redirects=False 禁止:


r = requests.get("http://github.com/", allow_redirects=False)
print(r.status_code)
print(r.text)

上面兩個(gè)例子,把參數(shù)去掉試試看效果。

其他更多詳細(xì)內(nèi)容不多說了,中文官網(wǎng)地址 cn.python-requests.org,順著看一遍,寫一遍,你就掌握這個(gè)爬蟲神器了。

對了,作者今年又發(fā)布了個(gè)新的庫 Requests-HTML: HTML Parsing for Humans,用來對抓取到的 HTML 文本進(jìn)行處理。這是要把 bs4 也一并干掉的節(jié)奏啊。現(xiàn)在更新到 0.9 版本,密切關(guān)注中。

我們編程教室的不少演示項(xiàng)目如 電影票價(jià)查詢、就業(yè)崗位分析、IP 代理池 里也都使用了 Requests 庫,想了解的請?jiān)诠娞枺–rossin的編程教室)里回復(fù) 項(xiàng)目

════
其他文章及回答:

如何自學(xué)Python | 新手引導(dǎo) | 精選Python問答 | Python單詞表 | 區(qū)塊鏈 | 人工智能 | 雙11 | 嘻哈 | 爬蟲 | 排序算法 | 我用Python | 高考 | 世界杯

歡迎搜索及關(guān)注: Crossin的編程教室

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42540.html

相關(guān)文章

  • 我們一直談?wù)摗皩懘a”,但你會(huì)“讀代碼”嗎?

    摘要:只有能看懂代碼,你才能快速準(zhǔn)確地定位代碼中的問題。要寫出很的代碼,少不了閱讀優(yōu)秀的源碼。我們的論壇和答疑群里,有一些同學(xué)會(huì)查看并解答其他人的代碼問題。實(shí)際上,我覺得就是沒看懂你只是看懂了每一行代碼的意思,但并沒有理解整個(gè)代碼的設(shè)計(jì)。 編程,又被稱作 寫代碼 。這個(gè)說法有可能會(huì)帶來一點(diǎn)點(diǎn)誤解,讓人覺得如何寫是學(xué)習(xí)編程要解決的主要問題。但事實(shí)并非如此。盡管最終代碼要在鍵盤上敲出來,但這個(gè)過...

    2i18ns 評論0 收藏0
  • 文章內(nèi)容提取庫 goose 簡介

    摘要:是一個(gè)文章內(nèi)容提取器,可以從任意資訊文章類的網(wǎng)頁中提取文章主體,并提取標(biāo)題標(biāo)簽摘要圖片視頻等信息,且支持中文網(wǎng)頁。 爬蟲抓取數(shù)據(jù)有兩個(gè)頭疼的點(diǎn),寫過爬蟲的小伙伴們一定都深有體會(huì): 網(wǎng)站的 防抓取 機(jī)制。你要盡可能將自己偽裝成一個(gè)人,騙過對方的服務(wù)器反爬驗(yàn)證。 網(wǎng)站的 內(nèi)容提取 。每個(gè)網(wǎng)站都需要你做不同的處理,而且網(wǎng)站一旦改版,你的代碼也得跟著更新。 第一點(diǎn)沒什么捷徑可走,套路見得多...

    keithxiaoy 評論0 收藏0
  • BeautifulSoup:網(wǎng)頁解析利器上手簡介

    摘要:文檔寫得很清楚,也有中文版,你只要看了最初的一小部分,就可以在代碼中派上用場了。 關(guān)于爬蟲的案例和方法,我們已講過許多。不過在以往的文章中,大多是關(guān)注在 如何把網(wǎng)頁上的內(nèi)容抓取下來 。今天我們來分享下,當(dāng)你已經(jīng)把內(nèi)容爬下來之后, 如何提取出其中你需要的具體信息 。 網(wǎng)頁被抓取下來,通常就是 str 字符串類型的對象 ,要從里面尋找信息,最直接的想法就是直接通過字符串的 find 方法 ...

    Carl 評論0 收藏0
  • 【長期更新】盤一盤那些 uTools 高質(zhì)量插件,你的工作效率瞬間提升N!

    摘要:參考增強(qiáng)神器,文檔搜索效率何止翻倍推薦系數(shù)圖片展示快速獲取文件文件夾名稱插件來源開發(fā)者插件介紹如名,鼠標(biāo)選中文件或者文件夾,點(diǎn)擊鼠標(biāo)中鍵激活插件即可將文件文件夾名稱復(fù)制到剪切板。 ...

    remcarpediem 評論0 收藏0
  • 學(xué)會(huì)它,能讓你工作學(xué)習(xí)效率提升10

    摘要:思維導(dǎo)圖的好處它們能投讓你一直對全部知識圖景了然于胸,因而可以讓你對那一學(xué)科的全部知識有一個(gè)更加平衡和更加全面的理解。竭盡所能地利用一切讓思維導(dǎo)圖的制作過程充滿樂趣音樂繪畫色彩。 從小老師就教育小肆,要多記筆記,說好記性不如爛筆頭,但記過的筆記卻很快就忘了,甚至回頭再看都不知道當(dāng)時(shí)記得什么,一直期望能有個(gè)比記筆記更好的方法來學(xué)習(xí),直到我遇見了它--思維導(dǎo)圖。 什么是思維導(dǎo)圖? 人腦不是...

    Cruise_Chan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<