Python爬蟲之爬蟲框架概述

一,pyspider

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

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

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

抓取環(huán)模型成熟穩(wěn)定,模塊間相互獨(dú)立,通過消息隊(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)頁內(nèi)容, processor 執(zhí)行預(yù)先編寫的python腳本,輸出結(jié)果或產(chǎn)生新的提鏈任務(wù)(發(fā)往 scheduler),形成閉環(huán)。

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

二,Scrapy

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

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


Scrapy主要包括了以下組件:

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

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

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

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

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

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

爬蟲中間件(Spider Middlewares): 介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應(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)用于接下來的抓取

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

然后,爬蟲解析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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容