摘要:而分配任務的是會員中心的爬蟲羅盤,實現(xiàn)集中管理分布執(zhí)行。開源即時網(wǎng)絡爬蟲項目同樣也要盡量實現(xiàn)通用化。網(wǎng)址和提取規(guī)則本來應該硬編碼到中的,現(xiàn)在隔離出來,由會員中心進行管理,那么就很容易做通用了。
1,引言
《Scrapy的架構(gòu)初探》一文所講的Spider是整個架構(gòu)中最定制化的一個部件,Spider負責把網(wǎng)頁內(nèi)容提取出來,而不同數(shù)據(jù)采集目標的內(nèi)容結(jié)構(gòu)不一樣,幾乎需要為每一類網(wǎng)頁都做定制。我們有個設想:是否能做一個比較通用的Spider,把定制部分再進一步隔離出去?
GooSeeker有一個爬蟲群模式,從技術(shù)實現(xiàn)層面來考察的話,其實就是把爬蟲軟件做成一個被動接受任務的執(zhí)行單元,給他什么任務他就做什么任務,也就是說同一個執(zhí)行單元可以爬多種不同的網(wǎng)站。而分配任務的是GooSeeker會員中心的爬蟲羅盤,實現(xiàn)集中管理分布執(zhí)行。
開源Python即時網(wǎng)絡爬蟲項目同樣也要盡量實現(xiàn)通用化。主要抓取以下2個重點:
網(wǎng)頁內(nèi)容提取器從外部注入到Spider中,讓Spider變通用:參看《Python即時網(wǎng)絡爬蟲:API說明》,通過API從GooSeeker會員中心獲得網(wǎng)頁內(nèi)容提取器,可以充分利用MS謀數(shù)臺的直觀標注快速生成提取器的能力。
抓取目標網(wǎng)址不再存于Spider,而是從外部獲得:GooSeeker有個基于大數(shù)據(jù)平臺的網(wǎng)址庫系統(tǒng),還有爬蟲羅盤可觀察網(wǎng)址的抓取狀態(tài),也有用戶界面添加刪除網(wǎng)址,把Spider進一步做成一個執(zhí)行機構(gòu)。
下面我們將進一步講解實現(xiàn)原理,以助于讀者閱讀源碼。
中間藍色部分就是GooSeeker會員中心的地址庫和爬蟲羅盤。網(wǎng)址和提取規(guī)則本來應該硬編碼到Spider中的,現(xiàn)在隔離出來,由會員中心進行管理,那么Spider就很容易做通用了。
地址庫和提取規(guī)則隔離出來以后,Scrapy的Spider可以專注于以下流程:
通過API從GooSeeker會員中心獲取內(nèi)容提取器:這個API的url可以硬編碼到Spider中,放在start_urls列表的位置, 這里本來是放目標網(wǎng)頁地址的,現(xiàn)在換成一個固定的API地址,在這一點上,Spider變通用了
在第一個parse()過程,不是解析目標網(wǎng)頁內(nèi)容,而是把API中獲得內(nèi)容提取器注入到gsExtractor中。
在第一個parse()過程,為第二個API構(gòu)造一個Request,目的是從GooSeeker會員中心獲取要爬取的網(wǎng)址
在第二個parse()過程,用目標網(wǎng)址構(gòu)造一個Request,這才是真正的交給Loader去下載目標網(wǎng)頁
在第三個parse()過程,利用gsExtractor提取網(wǎng)頁內(nèi)容
在第三個parse()過程,再次為第二個API構(gòu)造一個Request,獲得下一個目標網(wǎng)址
跳到4,一直循環(huán),直到GooSeeker會員中心的地址庫都用完了。
4,接下來的工作按照上述設想編寫和調(diào)測Scrapy的通用Spider
研究是否可以更加通用,把GooSeeker的爬蟲群調(diào)度都引入到Spider中,也就是在通過第一個API獲得提取器之前再增加一個獲得爬蟲群調(diào)度任務的過程,這樣,把所有Spider都變成被動接受任務的工作模式,每個Spider是不固定抓取規(guī)則的。
5,相關文檔Python即時網(wǎng)絡爬蟲項目: 內(nèi)容提取器的定義
Scrapy:python3下的第一次運行測試
6,集搜客GooSeeker開源代碼下載源開源Python即時網(wǎng)絡爬蟲GitHub源
7,文檔修改歷史2016-06-30:V1.0,首次發(fā)布
2016-06-30:V1.1,編輯修改,補充過程描述文字
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/38047.html
摘要:通用網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲又稱全網(wǎng)爬蟲,爬取對象從一些種子擴充到整個。為提高工作效率,通用網(wǎng)絡爬蟲會采取一定的爬取策略。介紹是一個國人編寫的強大的網(wǎng)絡爬蟲系統(tǒng)并帶有強大的。 爬蟲 簡單的說網(wǎng)絡爬蟲(Web crawler)也叫做網(wǎng)絡鏟(Web scraper)、網(wǎng)絡蜘蛛(Web spider),其行為一般是先爬到對應的網(wǎng)頁上,再把需要的信息鏟下來。 分類 網(wǎng)絡爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù),...
摘要:通用網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲又稱全網(wǎng)爬蟲,爬取對象從一些種子擴充到整個。為提高工作效率,通用網(wǎng)絡爬蟲會采取一定的爬取策略。介紹是一個國人編寫的強大的網(wǎng)絡爬蟲系統(tǒng)并帶有強大的。 爬蟲 簡單的說網(wǎng)絡爬蟲(Web crawler)也叫做網(wǎng)絡鏟(Web scraper)、網(wǎng)絡蜘蛛(Web spider),其行為一般是先爬到對應的網(wǎng)頁上,再把需要的信息鏟下來。 分類 網(wǎng)絡爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù),...
摘要:引言本文簡單講解一下的架構(gòu)。沒錯,開源的通用提取器就是要集成到架構(gòu)中,最看重的是的事件驅(qū)動的可擴展的架構(gòu)。架構(gòu)圖就是針對特定目標網(wǎng)站編寫的內(nèi)容提取器,這是在通用網(wǎng)絡爬蟲框架中最需要定制的部分。 1. 引言 本文簡單講解一下Scrapy的架構(gòu)。沒錯,GooSeeker開源的通用提取器gsExtractor就是要集成到Scrapy架構(gòu)中,最看重的是Scrapy的事件驅(qū)動的可擴展的架構(gòu)。除了...
摘要:用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給。中間件位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應。包含了在啟動時進行爬取的列表。對象經(jīng)過調(diào)度,執(zhí)行生成對象并送回給方法一般返回實例。 Scrapy 是什么 Scrapy 是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應用框架。 可以應用在包括數(shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。其最初是為了頁面抓取 (更確切...
摘要:分布式爬蟲框架詳解隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應用的普及,網(wǎng)絡作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應。 scrapy-redis分布式爬蟲框架詳解 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應用的普及,網(wǎng)絡作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個人都可以在網(wǎng)絡上...
閱讀 2628·2021-09-06 15:02
閱讀 3305·2021-09-02 10:18
閱讀 2904·2019-08-30 15:44
閱讀 758·2019-08-30 15:43
閱讀 2019·2019-08-30 14:08
閱讀 2818·2019-08-30 13:16
閱讀 1482·2019-08-26 13:52
閱讀 984·2019-08-26 12:21