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

資訊專欄INFORMATION COLUMN

爬蟲養(yǎng)成記 - 什么是網(wǎng)絡(luò)爬蟲

lucas / 1895人閱讀

摘要:趁著春節(jié),希望能寫一個小小的網(wǎng)絡(luò)爬蟲框架。網(wǎng)頁下載器接收,將頁面內(nèi)容下來??梢远x一個表,定義兩個字段和緩存數(shù)據(jù)庫網(wǎng)頁下載器網(wǎng)頁下載器就是更具下載網(wǎng)頁內(nèi)容等。常見的網(wǎng)頁下載器有是官方的基礎(chǔ)模塊。

趁著春節(jié),希望能寫一個小小的網(wǎng)絡(luò)爬蟲框架。
先定一個小目標,希望能比較優(yōu)雅地將某個網(wǎng)站上的所有圖片爬下來。
暫時先將這個爬蟲的名字叫做Squirrel,小松鼠吧。

什么是爬蟲

爬蟲其實是一種從互聯(lián)網(wǎng)上獲取信息,并且提取我們需要的信息并且儲存的手段。
互聯(lián)網(wǎng)就像一張網(wǎng),這種網(wǎng)是由一個個url相互連接的。一個url往往是對應(yīng)著一張網(wǎng)頁(Page). 各個頁面通過url鏈接成了一個網(wǎng)狀結(jié)構(gòu)。
那么我們從一個頁面出發(fā),分析其中的url,然后再去訪問該url對應(yīng)的頁面;再分析其中的url,并訪問。如此重復(fù)并可以爬遍所有的頁面。

簡單地捋了一下,我們?nèi)绻枰獙崿F(xiàn)一只爬蟲,則需要實現(xiàn)如下幾個功能模塊:

url管理器
url管理器應(yīng)該維護兩個不重復(fù)的set。一個儲存未爬過的url,一個儲存已經(jīng)爬過的url。如果我們要將一個url加入未爬過的url set,那么這個url必須都不在兩組set中。

網(wǎng)頁下載器
接收url,將頁面內(nèi)容下來。

網(wǎng)頁解析器
接收頁面內(nèi)容,從中提取出結(jié)構(gòu)化的數(shù)據(jù)和url。

儲存器
儲存結(jié)構(gòu)化的數(shù)據(jù)。

下面我們一步一步來認識我們設(shè)置的幾個模塊需要實現(xiàn)什么功能。

url管理器

url管理器主要需要維護兩個集合:

已經(jīng)抓取的url集合,我們叫做crawled_set

未抓取的url集合,我們叫做uncrawled_set
目的就是為了防止重復(fù)抓取循環(huán)抓取。

我們來分解url管理器需要實現(xiàn)的功能:

判斷一個url是否已經(jīng)在容器中

判斷uncrawled_set中是否為空。為空則停止爬取。

將一個url添加到容器的uncrawled_set中

將一個url從uncrawled_set移動到crawled_set中。

url管理器的實現(xiàn)方式有多種

將crawled_set和uncrawed_set存放在內(nèi)存中。
Python支持set數(shù)據(jù)類型,可以建立兩個set用來存放未爬和已爬url。

關(guān)系型數(shù)據(jù)庫。
可以定義一個表,定義兩個字段 url和is_crawled.

緩存數(shù)據(jù)庫 redis

網(wǎng)頁下載器

網(wǎng)頁下載器就是更具url下載網(wǎng)頁內(nèi)容(html等)。
常見的網(wǎng)頁下載器有
-urllib2
urllib2是python官方的基礎(chǔ)模塊。
-request

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

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

相關(guān)文章

  • 爬蟲養(yǎng)成 - 網(wǎng)絡(luò)下載器urllib2初認識

    摘要:申明本系列文章借鑒了慕課網(wǎng)的課程,。慕課網(wǎng)是一個非常贊的學習網(wǎng)站。是下的一個模塊,在中,被拆分成和實現(xiàn)一個最簡單的下載器使用函數(shù)可以給服務(wù)器發(fā)送一個請求。該函數(shù)返回一個該返回的對象有三個額外的函數(shù)取得服務(wù)器返回的。默認沒有的,請求方式為。 申明:本系列文章借鑒了慕課網(wǎng)的課程,http://www.imooc.com/learn/563。慕課網(wǎng)是一個非常贊的學習網(wǎng)站。 urllib2是p...

    AlphaWallet 評論0 收藏0
  • 爬蟲養(yǎng)成 - urllib2的調(diào)試和錯誤處理

    摘要:設(shè)置和處理事實上,并不是所有發(fā)起的請求都能得到服務(wù)器的回應(yīng)。例如網(wǎng)絡(luò)無鏈接連接不到服務(wù)器鏈接不存在請求的方法不對等情況都會造成拋出錯誤。上面說到的出錯就會拋出。用于處理相關(guān)的錯誤。 urllib2的timeout timeout參數(shù)用于設(shè)置超時。我們在爬取一些響應(yīng)較慢的網(wǎng)站的時候,需要設(shè)置一個比較長的超時時間。 response = urllib2.urlopen(request, t...

    CoffeX 評論0 收藏0
  • 爬蟲養(yǎng)成 - 網(wǎng)絡(luò)下載器urllib2偽裝術(shù)

    摘要:發(fā)送請求方不希望被跟蹤。主要用來將偽裝成一個正常的瀏覽器。該字典就是說是網(wǎng)絡(luò)協(xié)議名稱,是代理的。另外一般會明確指定資源存放的位置。意思是將現(xiàn)在提交的數(shù)據(jù)存放于下第篇。請求刪除某一個資源。向服務(wù)器提交數(shù)據(jù)。 前一個教程我們涉及到了urllib2的一些高級應(yīng)用。這一片文章我們來比較系統(tǒng)的介紹一下。 該篇教程參考了靜覓的博文:http://cuiqingcai.com/954.html。寫這...

    Darkgel 評論0 收藏0
  • 爬蟲養(yǎng)成 - urllib2的HTTPCookieProcessor

    摘要:相當于該用戶的檔案。上述的文字對機制描述的比較簡單也并不一定完全正確。但是默認的并不支持。中供我們使用的是。創(chuàng)建需要闖入一個存放的容器。即過期的也保存。目前博主只知道鏈接后帶的參數(shù)需要與相匹配。但是并不知道兩者具體的關(guān)系。 很多網(wǎng)站的資源需要用戶登錄之后才能獲取。我們一旦登錄后再訪問其他被保護的資源的時候,就不再需要再次輸入賬號、密碼。那么網(wǎng)站是怎么辦到的呢?一般來說,用戶在登錄之后,...

    gnehc 評論0 收藏0
  • 數(shù)據(jù)工程師妹子養(yǎng)成——數(shù)據(jù)庫篇

    摘要:是什么呀是一個和不太一樣的數(shù)據(jù)庫。懷疑是同時聯(lián)了四個集合的數(shù)據(jù)造成的。這本書的定位是和的應(yīng)用,所以有意弱化了數(shù)據(jù)庫的搭建維護和底層優(yōu)化。所以本書可能不適合數(shù)據(jù)庫工程師。 這篇文章沒有代碼,請放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個程序員的一生應(yīng)該這樣度過:當她回首往事的時候,她不會因為搭建環(huán)境浪費時間而悔恨,也不會因為集群無法運行而羞恥。這樣,在她開發(fā)的時候,...

    yexiaobai 評論0 收藏0

發(fā)表評論

0條評論

lucas

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<