您的位置:首頁>正文

Python分散式爬蟲!一篇文章帶你爬變所有網站的小姐姐!

下面是一個超級電腦的排行榜, 如果我們能擁有其中任意一個, 那麼我們就不需要搞什麼分散式系統。 可是我們買不起, 即使買得起, 也交不起電費, 所以我們只好費腦子搞分散式。

Rank

System

Cores

Rmax

Rpeak

Power (kW)

1

Tianhe-2 China

3,120,000

33,862.7

54,902.4

17,808

2

Titan US

560,640

17,590.0

27,112.5

8,209

3

Sequoia US

1,572,864

17,173.2

20,132.7

7,890

4

K Japan

705,024

10,510.0

11,280.4

12,660

5

Mira US

786,432

8,586.6

10,066.3

3,945

架構概述

與第二期介紹的通用爬蟲架構不同, 下面是一個聚焦爬蟲的架構圖, 與前者相比, 它不僅要保存網頁, 還要提取出網頁中的指定內容。

流程控制 – 任務

Scheduler_manager定時讀取Mysql中的任務資訊, 根據任務的週期等配置進行調度, 下面是一個最基本的任務啟停流程。

流程控制 – 資料

現在每個Crawler_core實例都有了待處理的任務, 接下來就要對每個任務的url進行處理了。 繼續使用Redis作為公共緩存來存放URLs, 多個Crawler_core實例平行存取todo集合。

流程控制 – 狀態

taskId:flag:crawler:info

Filed

value

說明

totalCnt

10000

抓取的url總數:抓取完成,不管成功失敗,都加1

failCnt

0

抓取的url失敗數:抓取失敗,加1

switch

1

任務狀態:0:停止,1:啟動,2:暫停,3:暫停啟動

priority

1

任務優先順序

retryCnt

0

重試次數

status

0

任務執行狀態:1:進行中,2:完成

Ref

0

url引用數:每消費一個url,減1;生成一個url,加1。等於0則任務完成

maxThreadCnt

100

任務的最大執行緒數

remainThreadCnt

10

剩餘可用執行緒數

lastFetchTime

1496404451532

上一次抓取時間

taskId:flag:parser:info

Filed

value

說明

totalCnt

10000

解析總數:解析完成,不管成功失敗,都加1

failCnt

0

解析失敗數:解析失敗,加1

crawlerStatus

0

爬取狀態:0:進行中,2:完成

ref

10

url引用數:crawler每保存一個網頁,加1;parser每解析完成一個網頁,減1。等於0不說明任務完成。若crawlerStatus等於2,ref等於0,則任務完成。

taskId:flag:filter:info

Filed

value

說明

totalCnt

10000

清洗總數:清洗完成,不管成功失敗,都加1

failCnt

0

清洗失敗數:清洗失敗,加1

crawlerStatus

0

解析狀態:0:進行中,2:完成

ref

10

url引用數:parser每保存一條資料,加1;filter每清洗完成一條資料,減1。等於0不說明任務完成。若parserStatus等於2,ref等於0,則任務完成。

流程控制 – failover

如果一個Crawler_core的機器掛掉了,就會開始資料恢復程式,把這台機器所有未完成的任務恢復到公共緩存中。

學會了嗎!這波是爬蟲中的必備技能哦!

流程控制 – 狀態

taskId:flag:crawler:info

Filed

value

說明

totalCnt

10000

抓取的url總數:抓取完成,不管成功失敗,都加1

failCnt

0

抓取的url失敗數:抓取失敗,加1

switch

1

任務狀態:0:停止,1:啟動,2:暫停,3:暫停啟動

priority

1

任務優先順序

retryCnt

0

重試次數

status

0

任務執行狀態:1:進行中,2:完成

Ref

0

url引用數:每消費一個url,減1;生成一個url,加1。等於0則任務完成

maxThreadCnt

100

任務的最大執行緒數

remainThreadCnt

10

剩餘可用執行緒數

lastFetchTime

1496404451532

上一次抓取時間

taskId:flag:parser:info

Filed

value

說明

totalCnt

10000

解析總數:解析完成,不管成功失敗,都加1

failCnt

0

解析失敗數:解析失敗,加1

crawlerStatus

0

爬取狀態:0:進行中,2:完成

ref

10

url引用數:crawler每保存一個網頁,加1;parser每解析完成一個網頁,減1。等於0不說明任務完成。若crawlerStatus等於2,ref等於0,則任務完成。

taskId:flag:filter:info

Filed

value

說明

totalCnt

10000

清洗總數:清洗完成,不管成功失敗,都加1

failCnt

0

清洗失敗數:清洗失敗,加1

crawlerStatus

0

解析狀態:0:進行中,2:完成

ref

10

url引用數:parser每保存一條資料,加1;filter每清洗完成一條資料,減1。等於0不說明任務完成。若parserStatus等於2,ref等於0,則任務完成。

流程控制 – failover

如果一個Crawler_core的機器掛掉了,就會開始資料恢復程式,把這台機器所有未完成的任務恢復到公共緩存中。

學會了嗎!這波是爬蟲中的必備技能哦!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示