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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

这个男人让你的爬虫开发效率提升8倍

發布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这个男人让你的爬虫开发效率提升8倍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

然而,作為一個嚴肅的技術號,今天我們不是要八卦他的開掛人生,而是他的代表作品: 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,順著看一遍,寫一遍,你就掌握這個爬蟲神器了。

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

    我們編程教室的不少演示項目如 電影票價查詢、就業崗位分析、IP 代理池 里也都使用了 Requests 庫,想了解的請在公眾號(Crossin的編程教室)里回復 項目

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

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

    歡迎搜索及關注: Crossin的編程教室

    總結

    以上是生活随笔為你收集整理的这个男人让你的爬虫开发效率提升8倍的全部內容,希望文章能夠幫你解決所遇到的問題。

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