python爬蟲-urllib、urllib2、requests三者關係

2021-01-08 it技術交流

抓取始終是一個很大的需求,小到單個頁面,某個站點,大到搜尋引擎(百度、谷歌)的全網抓取。只要人能看到的東西,理論上都是爬蟲可以獲取的。不論靜態頁面還是動態頁面。也不論pc端的頁面還是移動端的app。話有點大,但這就是本系列的目的。爬蟲編程,有很多語言可選,python、php、go、java···甚至是c。這裡我們選擇python作為爬蟲的程式語言,因為它簡單易上手,並且節約生命。

python爬蟲

這裡需要聲明的是以下的教程都是基於python2.7的,python3已經有很大的變化了。不了解python如何開始我們的爬蟲呢?隨便找個python教程,花五分鐘時間看一下基本語法,就可以回來繼續我們的爬蟲之旅。python中可以用來做爬蟲的庫也有很多,比較常用的是urllib、urllib2和requests,這三個庫基本可以解決大部分抓取需求,我們也將從這裡開始學起。很多人做了一段時間的爬蟲了,也不是很清楚這三者的關係,用這個庫的這個方法也可以,那個庫的那個方法也行,區別是啥,很容易混淆。所以下面我們對這三個庫的關係和區別有一個清晰的認識。

urllib、urllib2、requests關係

urllib和urllib2是python標準庫,就是你安裝了python,這兩個庫就已經可以直接使用了;requests是第三方庫,不是python基金會實現的,但是功能是很強大的。

urllib和urllib2

我們先說這兩個標準庫,這兩個庫做爬蟲也基本夠用了,不用requests也是可以的。

urllib和urllib2都是通過url打開資源,其中urllib短板是在太大,例如它只能接受url,卻如法對請求進行headers的偽裝,這樣寫的爬蟲發送的請求會被很多網站直接阻擋掉。因此python基金會不得不推出urllib2對這塊功能進行增強。urllib2可以接受一個Request對象,並以此設置一個URL的headers。但是問題在於urllib2並沒有完全取代urllib的所有功能,比如urllib中的urlencode()方法,在urllib2中就是沒有的。所以urllib和urllib2不得不一起使用。

requests

urllib和urllib2是夠亂的吧,使用時還要考慮url編碼等等問題。第三方庫requests出現了,它的slogen是Requests is the only Non-GMO HTTP library for Python, safe for human consumption.相對於標準庫urllib、urllib2也確實有資格說這句話。以上基礎的東西(urllib、urllib2、requests)我們還是要了解的,在這個過程中知道爬蟲是怎麼回事,以後再使用其他庫、框架、搞分布式什麼的

相關焦點

  • Python中爬蟲框架或模塊的區別
    Python中爬蟲框架或模塊的區別 (1)爬蟲框架或模塊 Python自帶爬蟲模塊:urllib、urllib2 ; 第三方爬蟲模塊:requests,aiohttp;
  • Python2.6低版本Python如何實現爬蟲功能
    之前我在文章中實現了用requests庫爬取騰訊疫情數據的功能。但是我再Linux伺服器上運行那個程序卻出現了意想不到的情況。>>> import requestsTraceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/lib/python2.6/site-packages/requests/__init__.py", line
  • Python開發簡單爬蟲【學習資料總結】
    將URL存放在關係型數據中 將URL存儲在緩存資料庫中 三、網頁下載器和urllib2模塊 網頁下載器類似於瀏覽器,會將網際網路對應的網頁以HTML的形式下載到本地,存儲成本地文件或內存字符串,然後進行後續的分析。
  • Python爬蟲工作基本流程以及常用的urllib模塊
    根據使用場景,網絡爬蟲可分為通用爬蟲(傳統爬蟲)和聚焦爬蟲兩種通用網絡爬蟲捜索引擎抓取系統(Baidu、Google、Yahoo等)的重要組成部分。主要目的是將網際網路上的網頁下載到本地,形成一個網際網路內容的鏡像備份。但是大多數情況下,網頁裡面90%的內容對用戶來說是無用的。
  • python爬蟲學習之路-抓包分析
    利用瀏覽器抓包,是爬蟲中的很實用的技能。在爬蟲編程之前,我們要對抓取的目標頁面有所了解,比如瀏覽器的這個請求這個頁面中間都經歷了什麼,數據是怎麼發送和返回的。抓包的作用我把抓包分析的作用簡單列一下:分析請求的headers等等,可以加載到你的爬蟲中,偽裝成瀏覽器。往往可以躲過簡單的反扒策略登錄狀態獲取,如果我們在瀏覽器中登錄,抓包拿到cookies,加到我們的爬蟲中,往往就可以繞過登錄這道坎,爬蟲直接登堂入室,抓取更有價值的數據post請求,例如頁面中通過post提交的表單。
  • Python爬蟲之Requests 庫的介紹和操作實例
    一、什麼是爬蟲?語言基於urllib編寫的,採用的是Apache2 Licensed開源協議的HTTP庫如果你看過上篇文章關於urllib庫的使用,你會發現,其實urllib還是非常不方便的,而Requests它會比urllib更加方便,可以節約我們大量的工作。
  • 爬蟲必備!傳說中最pythonic的第三方庫「requests」源碼閱讀
    requests庫基本上是玩爬蟲的兄弟夥們所接觸的第一課,也是公認的python最好上手的http請求庫。此庫基於標準庫urllib(最開始是urllib2)重新造輪子,用起來非常安逸。而且,這也是傳說中最pythonic的代碼,畢竟作者是公認的python界前三位的大神之一,本文將先從初始版本(0.2.0版本)開始閱讀源碼,儘量理解作者設計思路01拉取版本源碼寫這個是因為有些同學可能不是用的git,或是剛剛接觸git,不知道如何拿到tag版本的源碼
  • 爬蟲基礎面試題(Python篇)
    1:用過的爬蟲框架或者模塊有哪些?談談他們的區別或者優缺點?Python自帶:urllib,urllib2第 三 方:requests框 架:Scrapyurllib和urllib2模塊都做與請求URL相關的操作,但他們提供不同的功能。urllib2.
  • Python爬蟲第一課:requests的使用
    1、為什麼使用requests模塊,而不是用python自帶的urllibrequests的底層實現就是urllibrequests在python2 和python3中通用,方法完全一樣requests簡單易用requests能夠自動幫助我們解壓
  • Python-第三方庫requests詳解
    編寫爬蟲非常必要的python庫。Requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。
  • Python使用urllib庫、requests庫下載圖片的方法比較
    我們知道,使用Python製作一個爬蟲程序,requests庫是一個不錯的選擇,requests發送網絡請求非常簡單,比較使用urllib庫,使用requests庫可以大大減少代碼量,它還可以定製請求頭,這對於爬蟲程序來說是個非常好的功能。
  • Python新手學習網絡爬蟲要做什麼?
    三、urllib、urllib2兩個庫很重要urllib和urllib2個庫是我們在抓取頁面要用的。在python中,urllib和urllib2不可相互替代,雖然urllib2是urllib的增強,但是urllib中有urllib2中所沒有的函數。urllib2可以用urllib2.openurl中設置Request參數,來修改Header頭。
  • Python基礎學習之requests基礎(一)
    requests是python的一個HTTP客戶端庫,跟urllib,urllib2類似,那為什麼要用requests而不用urllib2呢?官方文檔中是這樣說明的:python的標準庫urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一個簡單的功能就需要一大堆代碼。插播個好消息!
  • Python篇:Requests獲取網頁源碼(爬蟲基礎)
    Python’s standard urllib2 module provides most ofthe HTTP capabilities you need, but the API is thoroughlybroken.It was built for a different
  • Python網絡爬蟲之Requests庫的使用(一)
    我們之前介紹了urllib庫的使用,其是作為爬蟲入門工具來介紹的,對新手理解python爬蟲的整個流程很有幫助。在掌握了爬蟲基本思想流程後,就需要引入更高級的工具來提高我們的開發效率,這一節就開始給大家介紹Requests庫的使用。
  • 怎麼用python扒網頁?新手入門爬蟲第一篇
    python爬蟲網頁的基本流程:首先選取一部分精心挑選的種子URL。將這些URL放入待抓取URL隊列。從待抓取URL隊列中讀取待抓取隊列的URL,解析DNS,並且得到主機的IP,並將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。
  • Python爬蟲技術路線?
    原標題:Python爬蟲技術路線?     對於初學者而言,Python爬蟲的技術路線應該怎麼取捨?     首先展示一下如何用python爬蟲requests庫進行爬取,requests庫是python爬蟲最基礎也必須掌握的庫。
  • Python爬蟲神器 requests 的高階應用
    requests高階應用文件上傳私信小編01即可獲取Python學習資料import requests39;chn.jpg&39;rb&39;file&39;***&39;*****&ssl證書驗證39;******&阻止拋出警告requests.packages.urllib3.disable_warinings()res = requests.get(url=url,verify=false)代理設置代理的分類:透明代理ip:伺服器知道你使用了代理,伺服器能夠獲取爬蟲真實的
  • Python爬蟲入門(一):三種爬蟲模塊
    ,但是IDEA不提錯這毛病已經大半年了,Eclipse被我卸了,MyEclipse到期了,VScode倒是可以,但是它對jar包的引入比較迷……一言以蔽之就是懶,所以最後還是回到了python。本部分旨在帶領讀者對python用於爬蟲的一系列模塊產生基本的印象,順便了解一下爬蟲的本質。
  • python 爬蟲破解百度翻譯requests模塊應用
    requests模塊:python中原生的一款基於網絡請求的模塊,功能非常強大,簡單便捷,效率極高提示:老版使用 urllib模塊,但requests比urllib模塊要簡單好用,現在學習requests模塊即可!