摘要:趁著春節,希望能寫一個小小的網絡爬蟲框架。網頁下載器接收,將頁面內容下來。可以定義一個表,定義兩個字段和緩存數據庫網頁下載器網頁下載器就是更具下載網頁內容等。常見的網頁下載器有是官方的基礎模塊。
趁著春節,希望能寫一個小小的網絡爬蟲框架。
先定一個小目標,希望能比較優雅地將某個網站上的所有圖片爬下來。
暫時先將這個爬蟲的名字叫做Squirrel,小松鼠吧。
爬蟲其實是一種從互聯網上獲取信息,并且提取我們需要的信息并且儲存的手段。
互聯網就像一張網,這種網是由一個個url相互連接的。一個url往往是對應著一張網頁(Page). 各個頁面通過url鏈接成了一個網狀結構。
那么我們從一個頁面出發,分析其中的url,然后再去訪問該url對應的頁面;再分析其中的url,并訪問。如此重復并可以爬遍所有的頁面。
簡單地捋了一下,我們如果需要實現一只爬蟲,則需要實現如下幾個功能模塊:
url管理器
url管理器應該維護兩個不重復的set。一個儲存未爬過的url,一個儲存已經爬過的url。如果我們要將一個url加入未爬過的url set,那么這個url必須都不在兩組set中。
網頁下載器
接收url,將頁面內容下來。
網頁解析器
接收頁面內容,從中提取出結構化的數據和url。
儲存器
儲存結構化的數據。
下面我們一步一步來認識我們設置的幾個模塊需要實現什么功能。
url管理器url管理器主要需要維護兩個集合:
已經抓取的url集合,我們叫做crawled_set
未抓取的url集合,我們叫做uncrawled_set
目的就是為了防止重復抓取和循環抓取。
我們來分解url管理器需要實現的功能:
判斷一個url是否已經在容器中
判斷uncrawled_set中是否為空。為空則停止爬取。
將一個url添加到容器的uncrawled_set中
將一個url從uncrawled_set移動到crawled_set中。
url管理器的實現方式有多種
將crawled_set和uncrawed_set存放在內存中。
Python支持set數據類型,可以建立兩個set用來存放未爬和已爬url。
關系型數據庫。
可以定義一個表,定義兩個字段 url和is_crawled.
緩存數據庫 redis
網頁下載器網頁下載器就是更具url下載網頁內容(html等)。
常見的網頁下載器有
-urllib2
urllib2是python官方的基礎模塊。
-request
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38385.html
摘要:申明本系列文章借鑒了慕課網的課程,。慕課網是一個非常贊的學習網站。是下的一個模塊,在中,被拆分成和實現一個最簡單的下載器使用函數可以給服務器發送一個請求。該函數返回一個該返回的對象有三個額外的函數取得服務器返回的。默認沒有的,請求方式為。 申明:本系列文章借鑒了慕課網的課程,http://www.imooc.com/learn/563。慕課網是一個非常贊的學習網站。 urllib2是p...
摘要:設置和處理事實上,并不是所有發起的請求都能得到服務器的回應。例如網絡無鏈接連接不到服務器鏈接不存在請求的方法不對等情況都會造成拋出錯誤。上面說到的出錯就會拋出。用于處理相關的錯誤。 urllib2的timeout timeout參數用于設置超時。我們在爬取一些響應較慢的網站的時候,需要設置一個比較長的超時時間。 response = urllib2.urlopen(request, t...
摘要:發送請求方不希望被跟蹤。主要用來將偽裝成一個正常的瀏覽器。該字典就是說是網絡協議名稱,是代理的。另外一般會明確指定資源存放的位置。意思是將現在提交的數據存放于下第篇。請求刪除某一個資源。向服務器提交數據。 前一個教程我們涉及到了urllib2的一些高級應用。這一片文章我們來比較系統的介紹一下。 該篇教程參考了靜覓的博文:http://cuiqingcai.com/954.html。寫這...
摘要:相當于該用戶的檔案。上述的文字對機制描述的比較簡單也并不一定完全正確。但是默認的并不支持。中供我們使用的是。創建需要闖入一個存放的容器。即過期的也保存。目前博主只知道鏈接后帶的參數需要與相匹配。但是并不知道兩者具體的關系。 很多網站的資源需要用戶登錄之后才能獲取。我們一旦登錄后再訪問其他被保護的資源的時候,就不再需要再次輸入賬號、密碼。那么網站是怎么辦到的呢?一般來說,用戶在登錄之后,...
摘要:是什么呀是一個和不太一樣的數據庫。懷疑是同時聯了四個集合的數據造成的。這本書的定位是和的應用,所以有意弱化了數據庫的搭建維護和底層優化。所以本書可能不適合數據庫工程師。 這篇文章沒有代碼,請放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個程序員的一生應該這樣度過:當她回首往事的時候,她不會因為搭建環境浪費時間而悔恨,也不會因為集群無法運行而羞恥。這樣,在她開發的時候,...
閱讀 954·2019-08-30 15:55
閱讀 550·2019-08-26 13:56
閱讀 2079·2019-08-26 12:23
閱讀 3295·2019-08-26 10:29
閱讀 600·2019-08-26 10:17
閱讀 2868·2019-08-23 16:53
閱讀 697·2019-08-23 15:55
閱讀 2814·2019-08-23 14:25