亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        動(dòng)態(tài)網(wǎng)頁(yè)解析下的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)設(shè)計(jì)

        2022-04-06 09:01:07陳春暉
        無(wú)線互聯(lián)科技 2022年20期
        關(guān)鍵詞:爬蟲網(wǎng)頁(yè)頁(yè)面

        陳春暉

        (福建農(nóng)業(yè)職業(yè)技術(shù)學(xué)院,福建 福州 350000)

        0 引言

        近年來(lái),互聯(lián)網(wǎng)數(shù)據(jù)的需求急劇增長(zhǎng),不僅是正在研發(fā)高性能爬蟲技術(shù)的傳統(tǒng)搜索引擎公司,還有大數(shù)據(jù)、人工智能等新興企業(yè)和學(xué)術(shù)機(jī)構(gòu)有著巨大的需求,這就需要一種低成本的網(wǎng)絡(luò)爬蟲器,以解決購(gòu)買數(shù)據(jù)的資金問題[1-2]。 本文在對(duì)系統(tǒng)需求進(jìn)行分析的基礎(chǔ)上,提出了一種基于分布式爬蟲的算法。

        1 系統(tǒng)需求

        1.1 能夠獲取站點(diǎn)的非同步載入

        隨著異步負(fù)載技術(shù)的不斷發(fā)展,動(dòng)態(tài)頁(yè)面的異步負(fù)載在網(wǎng)絡(luò)產(chǎn)品中得到了越來(lái)越多的應(yīng)用。 當(dāng)前主要的爬蟲無(wú)法對(duì)動(dòng)態(tài)頁(yè)面進(jìn)行有效分析,如何實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的爬蟲是本設(shè)計(jì)的主要內(nèi)容。

        1.2 反爬處理

        數(shù)據(jù)站點(diǎn)設(shè)計(jì)了一套防爬策略,以保護(hù)站點(diǎn)資料和普通使用者的存取,如當(dāng)前IP 訪問被禁用、單位時(shí)間訪問限制等。 所以,在設(shè)計(jì)系統(tǒng)時(shí),必須考慮如何處理好防爬蟲問題。

        1.3 健壯性

        一個(gè)好的系統(tǒng),不僅要有很好的容錯(cuò)率,還要有很高的穩(wěn)定性。 實(shí)例證明,這種分布式爬蟲系統(tǒng)必須具有良好的性能,可以在幾個(gè)星期甚至幾個(gè)月內(nèi)連續(xù)運(yùn)行。

        1.4 擴(kuò)展性

        在分布式網(wǎng)絡(luò)中,可擴(kuò)展性非常重要,因?yàn)榉植嫉木W(wǎng)絡(luò)爬蟲程序會(huì)經(jīng)常添加或移除節(jié)點(diǎn),而Scrapy-Redis 分布體系結(jié)構(gòu)恰好能解決這個(gè)問題,Scrapy-Redis 最大的優(yōu)勢(shì)在于可擴(kuò)充性,可以隨意添加和刪除任何一個(gè)節(jié)點(diǎn)。

        1.5 低成本和高效率

        本設(shè)計(jì)的爬蟲系統(tǒng)期望在硬件成本最小的情況下獲得更高的性能,Scrapy-Redis 的分布架構(gòu)正是最佳的解決辦法,其所需的服務(wù)器數(shù)量很少,普通的計(jì)算機(jī)也能使用,即使是樹莓派(一種卡式的微型計(jì)算機(jī),造價(jià)約在200 RMB)也可以充當(dāng)Slave 節(jié)點(diǎn)。 而且,基于Scrapy-Redis 結(jié)構(gòu)的爬蟲系統(tǒng)也是分布的,可以很好地實(shí)現(xiàn)對(duì)頁(yè)面的高效爬取[3]。

        2 系統(tǒng)結(jié)構(gòu)與模塊設(shè)計(jì)

        本文根據(jù)系統(tǒng)需求提出了基于分布式爬蟲體系結(jié)構(gòu)的結(jié)構(gòu)模型,并將其劃分為數(shù)據(jù)層和業(yè)務(wù)邏輯兩個(gè)層次,結(jié)合現(xiàn)有的分布式框架進(jìn)行了詳細(xì)的設(shè)計(jì),如圖1 所示,實(shí)線箭頭表示數(shù)據(jù)流方向,虛線箭頭表示分布群集的Master 節(jié)點(diǎn)和Slave 節(jié)點(diǎn)間的“請(qǐng)求應(yīng)答”通信。

        2.1 初始化參數(shù)模塊

        初始化參數(shù)模塊是為了讓系統(tǒng)能夠正常工作而初始化特定的參數(shù),在Slave 節(jié)點(diǎn)上,主節(jié)點(diǎn)IP 位址和要爬取的站點(diǎn)的參數(shù)都要初始化。 Slave 節(jié)點(diǎn)要在主節(jié)點(diǎn)上的IP 位址,并從Master 節(jié)點(diǎn)上的Redis 獲取爬取作業(yè),主節(jié)點(diǎn)無(wú)需事先知曉Slave 節(jié)點(diǎn)的IP 位址,而Slave節(jié)點(diǎn)可以隨時(shí)進(jìn)出。 此外,系統(tǒng)還會(huì)對(duì)網(wǎng)站的URL 初始化,該URL 將會(huì)出現(xiàn)在工作分配模組中的待執(zhí)行工作序列中。

        2.2 任務(wù)分配與爬取策略

        2.2.1 任務(wù)分派

        主要是對(duì)待完成的任務(wù)和已完成的任務(wù)進(jìn)行記錄,并根據(jù)已完成的任務(wù)排隊(duì)來(lái)防止對(duì)爬取的重復(fù)訪問。

        當(dāng)系統(tǒng)開始時(shí),任務(wù)指派模塊會(huì)收到種子URL 的初始化,并將其放到要爬取的隊(duì)列中。

        集群中Master 節(jié)點(diǎn)對(duì)Slave 節(jié)點(diǎn)采取優(yōu)先服務(wù)的原則,即從主節(jié)點(diǎn)的任務(wù)隊(duì)列中提取爬取任務(wù),提取完后記錄在已爬取任務(wù)隊(duì)列中[4]。

        若某個(gè)Slave 節(jié)點(diǎn)表現(xiàn)得更好,那么該節(jié)點(diǎn)可以更快地獲得任務(wù);相反,則會(huì)變得更慢。 所以,這個(gè)策略可以最大限度地利用各個(gè)Slave 節(jié)點(diǎn)的最高性能,而這些Slave 節(jié)點(diǎn)本身是否在線,并不會(huì)對(duì)其他Slave 節(jié)點(diǎn)的處理任務(wù)造成任何影響。

        2.2.2 爬蟲策略模塊

        不同的站點(diǎn)對(duì)數(shù)據(jù)的爬蟲策略是不同的,一般采用廣度優(yōu)先策略和深度優(yōu)先策略獲取數(shù)據(jù)。

        2.3 系統(tǒng)的穩(wěn)健維護(hù)模塊

        系統(tǒng)的穩(wěn)健性維護(hù)模塊包括4 個(gè)子模塊:心跳探測(cè)、IP 代理、類人爬取模塊、記錄遺失任務(wù)模塊。

        2.3.1 心跳探測(cè)模塊

        模塊包括監(jiān)控進(jìn)程、狀態(tài)記錄、保護(hù)進(jìn)程等,是系統(tǒng)的一個(gè)關(guān)鍵部件,可以監(jiān)控每一個(gè)Slave 節(jié)點(diǎn)的登錄和訪問,包括當(dāng)前的狀態(tài)(比如:正常的爬蟲、異常的要求、退出的情況)。

        系統(tǒng)狀況監(jiān)控流程模塊:位于主節(jié)點(diǎn),作用是監(jiān)控當(dāng)前Slave 節(jié)點(diǎn)的狀態(tài),并對(duì)監(jiān)控結(jié)果進(jìn)行處理和記錄。

        Slave 節(jié)點(diǎn)狀態(tài)記錄:將Slave 節(jié)點(diǎn)的狀態(tài)存入諸如 MySQL 之類的關(guān)系數(shù)據(jù)庫(kù)中。

        Slave 守護(hù)模塊:在Slave 的節(jié)點(diǎn)中,其功能是將自身的狀態(tài)在特定的時(shí)間段內(nèi)傳遞出去,并存儲(chǔ)在一個(gè)資料庫(kù)中。

        Slave Device 模塊對(duì)Slave 節(jié)點(diǎn)的狀態(tài)記錄進(jìn)行計(jì)時(shí)寫入,而Slave Development 通過(guò)該過(guò)程的狀態(tài)信息來(lái)判定該節(jié)點(diǎn)的狀態(tài)。

        2.3.2 IP 代理模塊

        是非常關(guān)鍵的模塊,能有效地防止網(wǎng)絡(luò)爬蟲,通過(guò)特定的策略,持續(xù)地修改IP 地址,使其造成多個(gè)站點(diǎn)的訪問,降低被攔截的概率。

        IP 代理替換模塊:在Slave 節(jié)點(diǎn)上,主要作用是從IP 代理池中隨機(jī)提取IP,用于爬蟲系統(tǒng)的爬蟲和記錄IP 的異常情況。

        2.3.3 類人爬蟲模塊

        作為系統(tǒng)的關(guān)鍵部件,其作用是通過(guò)仿真用戶訪問網(wǎng)站,欺騙網(wǎng)站的防爬機(jī)制,獲取用戶的數(shù)據(jù)。 本文提出了一種類人爬取策略,主要內(nèi)容如下。

        用戶代理策略:由一些常見的用戶代理組成用戶代理庫(kù),在用戶使用時(shí)隨機(jī)選擇一個(gè),并將其安裝到爬蟲系統(tǒng)中。

        Cookie 戰(zhàn)略:選擇是否使用Cookie,取決于目標(biāo)站點(diǎn)對(duì)數(shù)據(jù)的爬蟲。

        隨機(jī)時(shí)間爬蟲策略:通過(guò)仿真用戶在特定時(shí)間周期內(nèi)的存取次數(shù)和存取時(shí)間,欺騙目標(biāo)站點(diǎn)的頻率和存取時(shí)間,從而判定該系統(tǒng)是不是爬蟲;針對(duì)特定區(qū)域的爬蟲限制,隨機(jī)產(chǎn)生一定的時(shí)間間隔。

        通常情況下,使用最佳策略進(jìn)行組合,而在實(shí)際的爬行前,先對(duì)網(wǎng)站的忍耐程度進(jìn)行檢測(cè)(即嚴(yán)格的抗爬行戰(zhàn)略)。

        2.3.4 記錄遺失任務(wù)模塊

        模塊位于主計(jì)算機(jī)上,用于記錄因異常退出Slave節(jié)點(diǎn)而導(dǎo)致的丟失任務(wù)。 若Slave 節(jié)點(diǎn)沒有完成爬取,此時(shí)出現(xiàn)異常的Slave 節(jié)點(diǎn),爬蟲任務(wù)將不能被發(fā)送到Master 節(jié)點(diǎn)上,這就會(huì)導(dǎo)致任務(wù)丟失。 本模塊主要包括任務(wù)丟失和任務(wù)丟失的日志。

        2.4 資料爬取組件

        數(shù)據(jù)爬蟲模塊是利用特定的策略從頁(yè)面中獲取相應(yīng)的URL,包括自定義的爬蟲策略和動(dòng)態(tài)的網(wǎng)頁(yè)爬蟲。

        2.4.1 添加自定義爬取策略模塊

        在實(shí)際的爬行過(guò)程中,通常只需要特定的類別或特定區(qū)域的信息,廣度優(yōu)先,深度優(yōu)先。 而爬行的覆蓋區(qū)域太大,則無(wú)法快速準(zhǔn)確地獲取所需要的信息,這就需要一個(gè)特殊的爬行器策略為特定站點(diǎn)提供有吸引力的信息。 此外,對(duì)不同站點(diǎn)的蠕動(dòng)行為所能忍受的范圍也不盡相同。 為了應(yīng)對(duì)更多的爬蟲數(shù)據(jù),在此將加入一些事先設(shè)置的戰(zhàn)略配置。

        2.4.2 動(dòng)態(tài)、靜態(tài)的網(wǎng)頁(yè)爬蟲模塊

        主要針對(duì)動(dòng)態(tài)頁(yè)面和靜止頁(yè)面采用不同的爬蟲策略,分析動(dòng)態(tài)頁(yè)面所需的時(shí)間一般要比靜態(tài)頁(yè)面多,區(qū)分動(dòng)態(tài)頁(yè)面和靜態(tài)頁(yè)面,可以提高爬蟲效率。

        在動(dòng)態(tài)網(wǎng)頁(yè)分析方面,根據(jù)鄔柏[5]的建議,向白名單中添加網(wǎng)址,新網(wǎng)址將依據(jù)查詢的白名單,決定是否使用動(dòng)態(tài)頁(yè)面的解析方式,并將不包含白名單但視為動(dòng)態(tài)頁(yè)面的URL。 在此基礎(chǔ)上,本設(shè)計(jì)采用了如下的改進(jìn)方法。

        利用規(guī)則基礎(chǔ)來(lái)判定URL 對(duì)應(yīng)于存儲(chǔ)預(yù)先調(diào)查的目標(biāo)站點(diǎn)動(dòng)態(tài)頁(yè)面URL 的正則表達(dá)式的規(guī)則庫(kù),利用規(guī)則表達(dá)式,可以極大地減少規(guī)則庫(kù)的容量,減少系統(tǒng)的維護(hù)費(fèi)用。

        對(duì)于異常解析的網(wǎng)站日志,由管理員進(jìn)行分析,然后確定是否進(jìn)行更新。 在相同的網(wǎng)站上,由于用戶關(guān)注的數(shù)據(jù),動(dòng)態(tài)頁(yè)面的分布規(guī)則是有限制的,通常不會(huì)因?yàn)橐?guī)則表達(dá)式的覆蓋而無(wú)法進(jìn)行動(dòng)態(tài)分析,大多數(shù)的異常都是由網(wǎng)絡(luò)異?;蛘叻琅老x因子引起的。 所以,管理員在分析不正常的日志之后,就可以決定是否進(jìn)行規(guī)則的更新。

        2.5 異常處理模塊和解析模塊

        2.5.1 異常處理模塊

        處理在執(zhí)行爬蟲作業(yè)URL 時(shí)出現(xiàn)的異常,并將其傳回Master 節(jié)點(diǎn),由Master 節(jié)點(diǎn)進(jìn)行記錄。

        2.5.2 數(shù)據(jù)分析模塊

        根據(jù)預(yù)定的規(guī)則,對(duì)采集到的數(shù)據(jù)進(jìn)行分析,生成URL 或最終存儲(chǔ)的數(shù)據(jù)。 用戶依據(jù)網(wǎng)站、調(diào)查需求,從網(wǎng)站中提取或存儲(chǔ)的數(shù)據(jù)類型(頁(yè)面文字格式、JSON格式、URL 的鏈接類型)和URL 的規(guī)則,對(duì)相關(guān)的規(guī)則進(jìn)行配置。 在同一網(wǎng)站上,使用者要抽取的數(shù)據(jù)與URL 的鏈接是一樣的,符合一定規(guī)則的URL,就會(huì)相應(yīng)地抽取規(guī)則或者行為,例如,從某一列中抽取某一段話、某一段文字、點(diǎn)擊加載內(nèi)容等。

        2.6 數(shù)據(jù)儲(chǔ)存模塊

        將Redis 在Master 端收到的數(shù)據(jù)(異常和爬蟲)進(jìn)行統(tǒng)一處理,包括:記錄、緩存、異常記錄、數(shù)據(jù)存儲(chǔ)等。

        2.6.1 Slave 記錄數(shù)據(jù)模塊

        模塊的作用是將Slave 的例外訪問、數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理、被Slave 節(jié)點(diǎn)獲取的工作、Slave 節(jié)點(diǎn)請(qǐng)求的下載量(包括請(qǐng)求例外)返回到主要節(jié)點(diǎn)的Redis中,并大量地傳送給關(guān)聯(lián)資料庫(kù)。

        2.6.2 異常情況

        保存異常數(shù)據(jù),主要是利用傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù),將異常爬蟲記錄(在爬蟲過(guò)程中出現(xiàn)的URL)保存下來(lái),以便管理員查詢異常,補(bǔ)充數(shù)據(jù)。

        2.6.3 資料儲(chǔ)存

        儲(chǔ)存爬取資料,采用傳統(tǒng)的關(guān)聯(lián)式資料庫(kù),存取主節(jié)點(diǎn)上的Redis 中儲(chǔ)存的資料,如最后儲(chǔ)存使用者所需要的資料,以備日后使用者查詢時(shí)所用。

        3 結(jié)語(yǔ)

        本文在基于動(dòng)態(tài)網(wǎng)頁(yè)解析的網(wǎng)絡(luò)爬蟲系統(tǒng)需求基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行了整體的設(shè)計(jì),并將其劃分為數(shù)據(jù)采集級(jí)和數(shù)據(jù)解析級(jí)、數(shù)據(jù)存儲(chǔ)層、節(jié)點(diǎn)接入層和系統(tǒng)管理層。 各層共包括存儲(chǔ)層、網(wǎng)頁(yè)下載和任務(wù)調(diào)度、網(wǎng)頁(yè)信息提取、網(wǎng)頁(yè)刪除、節(jié)點(diǎn)管理、爬蟲管理6 大部分。隨著大數(shù)據(jù)時(shí)代的到來(lái),各種頁(yè)面的涌現(xiàn),傳統(tǒng)基于計(jì)算機(jī)的爬蟲系統(tǒng)已不能很好地適應(yīng)目前的檢索需求,同時(shí)也需要更高的、實(shí)時(shí)的、精確的信息采集。 因此,如何有效地從網(wǎng)頁(yè)中抽取網(wǎng)頁(yè)信息,建立一個(gè)基于動(dòng)態(tài)網(wǎng)頁(yè)解析的網(wǎng)絡(luò)爬蟲系統(tǒng)是十分必要的。

        猜你喜歡
        爬蟲網(wǎng)頁(yè)頁(yè)面
        大狗熊在睡覺
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
        刷新生活的頁(yè)面
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        基于CSS的網(wǎng)頁(yè)導(dǎo)航欄的設(shè)計(jì)
        電子制作(2018年10期)2018-08-04 03:24:38
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        基于URL和網(wǎng)頁(yè)類型的網(wǎng)頁(yè)信息采集研究
        電子制作(2017年2期)2017-05-17 03:54:56
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        網(wǎng)頁(yè)制作在英語(yǔ)教學(xué)中的應(yīng)用
        10個(gè)必知的網(wǎng)頁(yè)設(shè)計(jì)術(shù)語(yǔ)
        美女草逼视频免费播放| 亚洲日韩成人无码| 精品国产av一区二区三区四区| 久久婷婷国产综合精品| 国产七十六+老熟妇| 国模少妇一区二区三区| 久久中国国产Av秘 入口| 亚洲国产剧情一区在线观看| 精品国产一区二区三区av新片| 久久久久久人妻无码| 高清偷自拍第1页| 粉嫩极品国产在线观看| 韩国女主播一区二区三区在线观看| 中文乱码字幕精品高清国产| 亚洲高清国产一区二区| 人人澡人人妻人人爽人人蜜桃麻豆| 久久精品麻豆日日躁夜夜躁| 亚洲精品无码mv在线观看| 欧美日韩国产成人高清视| 久久精品免视看国产明星 | 久久无码av三级| 音影先锋色天堂av电影妓女久久 | 国产3p一区二区三区精品| 内射干少妇亚洲69xxx| 亚洲精品无码mv在线观看| 国产av无码专区亚洲草草| 丝袜美腿亚洲综合在线播放| 国产亚洲自拍日本亚洲| 久久精品国产精品国产精品污| 国产999视频| 素人激情福利视频| 与最丰满美女老师爱爱视频| 性色av免费网站| 老熟妇仑乱一区二区视頻 | 国产成人综合亚洲国产| 一本久久a久久免费综合| 色八a级在线观看| 亚洲午夜精品久久久久久一区| 中文字幕一区二区三区在线乱码| 黄片国产一区二区三区| 狠狠的干性视频|