日韩欧美亚州-日韩欧美亚洲国产-日韩欧美亚洲国产高清在线-日韩欧美亚洲精品-色135综合网-色91在线

干貨 | 三種分布式爬蟲策略介紹



三種分布式爬蟲策略:
(1)Slaver端從Master端拿任務(Request/url/ID)進行數(shù)據(jù)抓取,在抓取數(shù)據(jù)的同時也生成新任務,并將任務分配給Master端。
Master端只有一個Redis數(shù)據(jù)庫,負責對Slaver提交的任務進行去重、加入待爬隊列。

優(yōu)點
scrapy-redis默認使用的就是這種策略,我們實現(xiàn)起來很簡單,因為任務調度等工作scrapy-redis都已經(jīng)幫我們做好了,我們只需要繼承RedisSpider、指定redis_key即可。

缺點
scrapy-redis調度的任務是Request對象,里面信息量比較大(不僅包含URL,還有callback函數(shù)、headers等信息),會降低爬蟲速度,而且會占用Redis大量的存儲空間。當然,我們可以重寫方法實現(xiàn)調度URL或者用戶ID。

(2)Master端跑一個程序去生成任務(Request/url/ID)。
Master端負責的是生產(chǎn)任務,并把任務去重,加入到待爬隊列中。Slaver端只負責從Master端獲取任務進行爬取。

優(yōu)點
將生成任務和抓取數(shù)據(jù)分開,分工明確,減少了Master和Slaver端之間的數(shù)據(jù)交流;Master端生成任務還有一個好處,那就是可以便捷地重寫判重策略(當數(shù)據(jù)量大時優(yōu)化判重的性能和速度還是很重要的)。

缺點
像QQ或者新浪微博這種網(wǎng)站,發(fā)送一個請求,返回的內(nèi)容里面可能包含幾十個待爬的用戶ID,即幾十個新爬蟲任務。但有些網(wǎng)站一個請求只能得到一兩個新任務,并且返回的內(nèi)容里也包含爬蟲要抓取的目標信息,如果將生成任務和抓取任務分開反而會降低爬蟲抓取效率,畢竟帶寬也是爬蟲的一個瓶頸問題。我們要秉著發(fā)送盡量少的請求為原則,同時也是為了減輕網(wǎng)站服務器的壓力,要做一只有道德的Crawler。所以,視情況而定。

(3)Master中只有一個集合,它只有查詢的作用。Slaver在遇到新任務時詢問Master此任務是否已爬,如果未爬則加入Slaver自己的待爬隊列中,Master把此任務記為已爬。它和策略一比較像,但明顯比策略一簡單。策略一的簡單是因為有Scrapy-redis實現(xiàn)了scheduler中間件,它并不適用于非Scrapy框架的爬蟲。

優(yōu)點
實現(xiàn)簡單,非Scrapy框架的爬蟲也適用。Master端壓力比較小,Master與Slaver的數(shù)據(jù)交流也不大。

缺點
“健壯性”不夠,需要另外定時保存待爬隊列以實現(xiàn)“斷點續(xù)爬”功能。各Slaver的待爬任務不通用。

如果把Slaver比作工人,把Master比作工頭。
策略一就是工人遇到新任務都上報給工頭,需要干活的時候就去工頭那里領任務;

策略二就是工頭去找新任務,工人只管從工頭那里領任務干活;

策略三就是工人遇到新任務時詢問工頭此任務是否有人做了,沒有的話工人就將此任務加到自己的“行程表”。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章
主站蜘蛛池模板: 久久婷五月天| 伊人久久国产免费观看视频| 欧美在线一级毛片观看| 成人一级| 精品日韩欧美一区二区三区| 欧美顶级毛片在线播放| 中日韩美中文字幕| 国产亚洲一路线二路线高质量 | 国产成人精品三区| 免费中文字幕一级毛片| 欧美午夜性春猛交| 99在线国产| 国产美女三级做爰| 精品91一区二区三区| 三级网站免费看| 香蕉成人| 7ass欧美| 操你.com| 国产99视频精品免费观看7| 久艹在线观看视频| 久久久久久久91精品免费观看| 午夜三级成人三级| 亚洲国产精品一区二区不卡| 爱视频福利广场| 国产盗摄一区二区三区| 国产亚洲一区二区三区不卡| 男女精品视频| 久久久久久91精品色婷婷| 日韩欧美国产高清在线观看| 欧美一级特黄特色大片免费| 亚洲爽爽| 天堂成人av| 亚洲视频一区在线| 亚洲va久久久噜噜噜久久狠狠| 自怕偷自怕亚洲精品| 67194午夜| 99久久精品99999久久| 5级做人爱c视版免费视频| a毛片a毛片a视频| 99激情| 成年人免费网站视频|