Python爬蟲(chóng)之爬蟲(chóng)框架概述

一旬渠,pyspider

pyspider的設(shè)計(jì)基礎(chǔ)是:以python腳本驅(qū)動(dòng)的抓取環(huán)模型爬蟲(chóng)

通過(guò)python腳本進(jìn)行結(jié)構(gòu)化信息的提取,follow鏈接調(diào)度抓取控制寇损,實(shí)現(xiàn)最大的靈活性

通過(guò)web化的腳本編寫(xiě)督暂、調(diào)試環(huán)境胧奔。web展現(xiàn)調(diào)度狀態(tài)

抓取環(huán)模型成熟穩(wěn)定,模塊間相互獨(dú)立较沪,通過(guò)消息隊(duì)列連接鳞绕,從單進(jìn)程到多機(jī)分布式靈活拓展

pyspider的架構(gòu)主要分為 scheduler(調(diào)度器), fetcher(抓取器), processor(腳本執(zhí)行):

各個(gè)組件間使用消息隊(duì)列連接,除了scheduler是單點(diǎn)的尸曼,fetcher 和 processor 都是可以多實(shí)例分布式部署的们何。 scheduler 負(fù)責(zé)整體的調(diào)度控制

任務(wù)由 scheduler 發(fā)起調(diào)度,fetcher 抓取網(wǎng)頁(yè)內(nèi)容控轿, processor 執(zhí)行預(yù)先編寫(xiě)的python腳本冤竹,輸出結(jié)果或產(chǎn)生新的提鏈任務(wù)(發(fā)往 scheduler),形成閉環(huán)茬射。

每個(gè)腳本可以靈活使用各種python庫(kù)對(duì)頁(yè)面進(jìn)行解析鹦蠕,使用框架API控制下一步抓取動(dòng)作,通過(guò)設(shè)置回調(diào)控制解析動(dòng)作在抛。

二钟病,Scrapy

Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架刚梭。 可以應(yīng)用在包括數(shù)據(jù)挖掘肠阱,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。

Scrapy 使用了 Twisted?異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊朴读。整體架構(gòu)大致如下


Scrapy主要包括了以下組件:

引擎(Scrapy): 用來(lái)處理整個(gè)系統(tǒng)的數(shù)據(jù)流處理, 觸發(fā)事務(wù)(框架核心)

調(diào)度器(Scheduler): 用來(lái)接受引擎發(fā)過(guò)來(lái)的請(qǐng)求, 壓入隊(duì)列中, 并在引擎再次請(qǐng)求的時(shí)候返回. 可以想像成一個(gè)URL(抓取網(wǎng)頁(yè)的網(wǎng)址或者說(shuō)是鏈接)的優(yōu)先隊(duì)列, 由它來(lái)決定下一個(gè)要抓取的網(wǎng)址是什么, 同時(shí)去除重復(fù)的網(wǎng)址

下載器(Downloader): 用于下載網(wǎng)頁(yè)內(nèi)容, 并將網(wǎng)頁(yè)內(nèi)容返回給蜘蛛(Scrapy下載器是建立在twisted這個(gè)高效的異步模型上的)

爬蟲(chóng)(Spiders): 爬蟲(chóng)是主要干活的, 用于從特定的網(wǎng)頁(yè)中提取自己需要的信息, 即所謂的實(shí)體(Item)屹徘。用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個(gè)頁(yè)面

項(xiàng)目管道(Pipeline): 負(fù)責(zé)處理爬蟲(chóng)從網(wǎng)頁(yè)中抽取的實(shí)體,主要的功能是持久化實(shí)體磨德、驗(yàn)證實(shí)體的有效性缘回、清除不需要的信息吆视。當(dāng)頁(yè)面被爬蟲(chóng)解析后典挑,將被發(fā)送到項(xiàng)目管道,并經(jīng)過(guò)幾個(gè)特定的次序處理數(shù)據(jù)啦吧。

下載器中間件(Downloader Middlewares): 位于Scrapy引擎和下載器之間的框架您觉,主要是處理Scrapy引擎與下載器之間的請(qǐng)求及響應(yīng)。

爬蟲(chóng)中間件(Spider Middlewares): 介于Scrapy引擎和爬蟲(chóng)之間的框架授滓,主要工作是處理蜘蛛的響應(yīng)輸入和請(qǐng)求輸出琳水。

調(diào)度中間件(Scheduler Middewares): 介于Scrapy引擎和調(diào)度之間的中間件肆糕,從Scrapy引擎發(fā)送到調(diào)度的請(qǐng)求和響應(yīng)。

Scrapy運(yùn)行流程大概如下

首先在孝,引擎從調(diào)度器中取出一個(gè)鏈接(URL)用于接下來(lái)的抓取

引擎把URL封裝成一個(gè)請(qǐng)求(Request)傳給下載器诚啃,下載器把資源下載下來(lái),并封裝成應(yīng)答包(Response)

然后私沮,爬蟲(chóng)解析Response

若是解析出實(shí)體(Item),則交給實(shí)體管道進(jìn)行進(jìn)一步的處理始赎。

若是解析出的是鏈接(URL),則把URL交給Scheduler等待抓取

pysipder環(huán)境搭建:

http://docs.pyspider.org/en/latest/

pip install pyspider

首先要安裝phantomjs

安裝好了之后命令行輸入pyspider all啟動(dòng)

http://localhost:5000

支持多線程爬取、JS動(dòng)態(tài)解析仔燕,提供了可操作界面造垛、出錯(cuò)重試、定時(shí)爬取等等的功能晰搀,使用非常人性化五辽。

scrapy環(huán)境搭建:

pip installpyOpenSSL

安裝pywin32

https://sourceforge.net/projects/pywin32/files/pywin32/

import win32com驗(yàn)證

pip install lxml

pip install scrapy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市外恕,隨后出現(xiàn)的幾起案子杆逗,更是在濱河造成了極大的恐慌,老刑警劉巖吁讨,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件髓迎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡建丧,警方通過(guò)查閱死者的電腦和手機(jī)排龄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翎朱,“玉大人橄维,你說(shuō)我怎么就攤上這事∷┣” “怎么了争舞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)澈灼。 經(jīng)常有香客問(wèn)我竞川,道長(zhǎng),這世上最難降的妖魔是什么叁熔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任委乌,我火速辦了婚禮,結(jié)果婚禮上荣回,老公的妹妹穿的比我還像新娘遭贸。我一直安慰自己,他們只是感情好心软,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布壕吹。 她就那樣靜靜地躺著著蛙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耳贬。 梳的紋絲不亂的頭發(fā)上踏堡,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音咒劲,去河邊找鬼暂吉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缎患,可吹牛的內(nèi)容都是我干的慕的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挤渔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肮街!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起判导,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嫉父,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后眼刃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绕辖,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年擂红,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仪际。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昵骤,死狀恐怖树碱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情变秦,我是刑警寧澤成榜,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蹦玫,受9級(jí)特大地震影響赎婚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜樱溉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一挣输、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饺窿,春花似錦歧焦、人聲如沸移斩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至肠套,卻和暖如春舰涌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背你稚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工瓷耙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刁赖。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓搁痛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宇弛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸡典,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文希望達(dá)到以下目標(biāo): 簡(jiǎn)要介紹Scarpy 閱讀官網(wǎng)入門文檔并實(shí)現(xiàn)文檔中的范例 使用Scarpy優(yōu)豆瓣爬蟲(chóng)的抓取...
    Andrew_liu閱讀 81,962評(píng)論 30 177
  • PySpider PySpider詳細(xì)介紹 PySipder是一個(gè)Python爬蟲(chóng)程序 演示地址:http://d...
    abeb6ca9bb86閱讀 1,792評(píng)論 0 2
  • 我的旁邊是希爾頓酒店,酒店旁邊有一家“騙子”公司枪芒。門口一對(duì)老外情侶大口的吃著冰激淋樣的甜點(diǎn)彻况,我找了一個(gè)很舒服的景觀...
    探尋四季閱讀 230評(píng)論 0 0
  • 古人把太陽(yáng)視為天之陽(yáng),把艾視為地之陽(yáng)舅踪,可見(jiàn)艾草是秉陽(yáng)氣而生的纽甘!故艾灸是天賜人間的寶貴禮物,它給女人帶來(lái)的“福利...
    TaoY我在新加坡當(dāng)媽媽閱讀 564評(píng)論 1 2
  • 1. 感恩和同學(xué)們聚會(huì)抽碌,同學(xué)們給我紅包悍赢。 2. 感恩今天開(kāi)工,收到老板的開(kāi)工紅包货徙。 3. 感恩今天駕車去上班路上通...
    詩(shī)羚閱讀 259評(píng)論 0 2