• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      網(wǎng)絡(luò)爬蟲(chóng)實(shí)時(shí)控制器的設(shè)計(jì)與實(shí)現(xiàn)

      2021-04-01 08:14:24李健張克亮
      現(xiàn)代計(jì)算機(jī) 2021年5期
      關(guān)鍵詞:爬蟲(chóng)框架控制器

      李健,張克亮

      (信息工程大學(xué)洛陽(yáng)校區(qū),洛陽(yáng)471003)

      0 引言

      網(wǎng)絡(luò)爬蟲(chóng)不僅作為搜索引擎的關(guān)鍵組件,而且在其他領(lǐng)域也有廣泛應(yīng)用[1]。借助網(wǎng)絡(luò)爬蟲(chóng),語(yǔ)言學(xué)家可以下載大量文本以研究語(yǔ)言現(xiàn)象,銷(xiāo)售人員可以搜集產(chǎn)品的價(jià)格和銷(xiāo)量以分析市場(chǎng)行情,領(lǐng)域愛(ài)好者能夠?qū)⒛硞€(gè)網(wǎng)站或欄目的內(nèi)容收藏到本地,AI研究者能夠采集各類(lèi)數(shù)據(jù)作為機(jī)器學(xué)習(xí)的素材。

      國(guó)內(nèi)外眾多機(jī)構(gòu)和個(gè)人開(kāi)發(fā)了多款爬蟲(chóng)工具軟件,如Nutch、Heritrix、SOUP、ParseHub、GooSeeker、八爪魚(yú)、火車(chē)頭等;常用的爬蟲(chóng)框架包括WebCollector、Nutch、WebMagic、Heritrix、Scrapy和PySpider等[2-4]。這些爬蟲(chóng)軟件和框架在很大程度上便利了人們對(duì)網(wǎng)絡(luò)數(shù)據(jù)的獲取,但還具有某些局限性:有的功能相對(duì)單一,使用方式受限,可定制化程度不夠;有的安裝配置繁瑣,框架結(jié)構(gòu)復(fù)雜,使用門(mén)檻較高;有的采用封閉式框架,不提供開(kāi)源代碼,難以進(jìn)行二次開(kāi)發(fā);有的抓取速度慢,解析和抽取能力弱,性能表現(xiàn)不佳??傊?,基于現(xiàn)有框架快速開(kāi)發(fā)個(gè)性化爬蟲(chóng)仍然具有一定難度。因此,為開(kāi)發(fā)者提供一個(gè)輕量級(jí)、模塊化、免費(fèi)開(kāi)源、高效易用的網(wǎng)絡(luò)爬蟲(chóng)框架十分重要。

      1 爬蟲(chóng)框架設(shè)計(jì)

      1.1 爬蟲(chóng)工作原理

      網(wǎng)絡(luò)爬蟲(chóng)(Web Crawler)是按照一定規(guī)則自動(dòng)獲取Web信息資源的計(jì)算機(jī)程序[5]?!芭老x(chóng)”是一種形象的比喻,有時(shí)也被稱(chēng)為網(wǎng)絡(luò)蜘蛛(Web Spider)或網(wǎng)絡(luò)機(jī)器人(Web Robot)。網(wǎng)絡(luò)爬蟲(chóng)主要是面向Web的,這是由Web資源的開(kāi)放性和豐富性所決定的。網(wǎng)絡(luò)爬蟲(chóng)通常會(huì)對(duì)Web原始數(shù)據(jù)進(jìn)行二次抽取,以提高目標(biāo)數(shù)據(jù)的結(jié)構(gòu)化程度和價(jià)值密度。爬蟲(chóng)的規(guī)則一方面是指爬蟲(chóng)所采用的搜索策略(如深度優(yōu)先、廣度優(yōu)先等),另一方面是指爬蟲(chóng)要遵循的行業(yè)規(guī)范(如Robot協(xié)議)。

      根據(jù)數(shù)據(jù)采集的范圍和精度不同,網(wǎng)絡(luò)爬蟲(chóng)可分為“漫爬型”和“垂直型”。前者用于搜索引擎的廣泛采集,也被稱(chēng)通用爬蟲(chóng);后者用于領(lǐng)域數(shù)據(jù)的精準(zhǔn)采集,也被稱(chēng)聚焦爬蟲(chóng)。通用爬蟲(chóng)對(duì)網(wǎng)頁(yè)中所有超鏈接進(jìn)行無(wú)差別搜索,得到一棵完整的生成樹(shù);聚焦爬蟲(chóng)則按照一定條件進(jìn)行篩選,得到一棵被剪枝的生成樹(shù)。聚焦爬蟲(chóng)面向特定主題和應(yīng)用,是行業(yè)人員獲取領(lǐng)域數(shù)據(jù)的重要工具,也是文本關(guān)注的對(duì)象。網(wǎng)絡(luò)爬蟲(chóng)的必要技術(shù)包括:Web訪(fǎng)問(wèn)、信息抽取、數(shù)據(jù)存儲(chǔ)、爬蟲(chóng)控制等,其基本工作流程如圖1所示。

      圖1爬蟲(chóng)基本工作流程

      首先將種子URL放入任務(wù)隊(duì)列,然后循環(huán)檢測(cè)隊(duì)列是否為空,若不為空則取出下一個(gè)URL進(jìn)行數(shù)據(jù)下載,若為空則結(jié)束爬蟲(chóng)任務(wù)。Web資源下載完成后,對(duì)其進(jìn)行目標(biāo)數(shù)據(jù)抽取和擴(kuò)展鏈接過(guò)濾,目標(biāo)數(shù)據(jù)存入存儲(chǔ)系統(tǒng),擴(kuò)展鏈接添加到任務(wù)隊(duì)列。在URL不斷出列的同時(shí)又有新的URL補(bǔ)充進(jìn)來(lái),這樣就實(shí)現(xiàn)了自動(dòng)采集。為了避免重復(fù)采集,我們通常借助一個(gè)Visited數(shù)組來(lái)記錄那些已被訪(fǎng)問(wèn)的URL。

      1.2 框架總體結(jié)構(gòu)

      面向個(gè)性化需求的輕量級(jí)爬蟲(chóng)框架應(yīng)當(dāng)采用模塊化設(shè)計(jì),能夠下載各類(lèi)網(wǎng)絡(luò)資源,并支持異步下載、編碼檢測(cè)、提交表單、壓縮傳輸、使用代理等機(jī)制;能夠解析和抽取HTML、XML、JSON等多種數(shù)據(jù);能夠提供靈活的爬蟲(chóng)控制方式,內(nèi)置常用搜索算法;能夠管理和分配線(xiàn)程資源和代理資源,支持分布式部署。根據(jù)上述需求,我們?cè)O(shè)計(jì)了如圖2所示的爬蟲(chóng)框架,主要組件包括:控制器、下載器、解析器、線(xiàn)程池、代理池等、分布式部署器和智能化工具包。

      圖2輕量級(jí)爬蟲(chóng)框架

      框架中的“智能化工具包”通過(guò)人機(jī)交互技術(shù)實(shí)現(xiàn)可視化模板配置,使用戶(hù)不必掌握Web專(zhuān)業(yè)知識(shí)就能完成模板配置,從而降低爬蟲(chóng)使用門(mén)檻[6]。通過(guò)智能抽取技術(shù)實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)內(nèi)容(如正文、日期、目錄等)的自動(dòng)抽取,進(jìn)一步減少配置工作量。通過(guò)主題模型計(jì)算網(wǎng)頁(yè)內(nèi)容的相關(guān)度,從而提高主題爬蟲(chóng)的采集精度[7]。

      1.3 框架應(yīng)用模式

      通常情況下,框架中的控制器、解析器、下載器為必選組件,其余為可選組件,用戶(hù)可根據(jù)需要進(jìn)行組裝。爬蟲(chóng)框架的基本應(yīng)用模式如圖3所示。

      圖3爬蟲(chóng)框架應(yīng)用模式

      引用爬蟲(chóng)框架后,開(kāi)發(fā)者只需幾行代碼即可完成對(duì)簡(jiǎn)單任務(wù)的爬??;對(duì)于較復(fù)雜的任務(wù),亦可通過(guò)參數(shù)化定制或二次開(kāi)發(fā)來(lái)實(shí)現(xiàn)。當(dāng)需要規(guī)劃新的爬蟲(chóng)路線(xiàn)時(shí),開(kāi)發(fā)者通常只須重寫(xiě)控制器的相關(guān)方法,從而最大程度復(fù)用框架功能。

      2 簡(jiǎn)單爬蟲(chóng)控制器

      2.1 控制器設(shè)計(jì)

      作為爬蟲(chóng)框架的核心部件,控制器的設(shè)計(jì)尤其重要。它對(duì)外提供操作接口,對(duì)內(nèi)控制整個(gè)爬蟲(chóng)的運(yùn)行過(guò)程。簡(jiǎn)單爬蟲(chóng)控制器的組成結(jié)構(gòu)如圖4所示。

      圖4簡(jiǎn)單爬蟲(chóng)控制器

      爬蟲(chóng)控制器的具體功能包括:①提供數(shù)據(jù)接口:接

      收用戶(hù)輸入的種子URL,并將結(jié)果返回;②控制爬行路線(xiàn):按照一定策略(深度優(yōu)先、廣度優(yōu)先等)進(jìn)行網(wǎng)頁(yè)爬??;③維護(hù)訪(fǎng)問(wèn)列表:對(duì)于已經(jīng)訪(fǎng)問(wèn)過(guò)的URL不再重復(fù)訪(fǎng)問(wèn);④設(shè)置過(guò)濾條件:對(duì)于擴(kuò)展URL進(jìn)行條件過(guò)濾;⑤控制任務(wù)總量:設(shè)置最大采集數(shù)量、最大搜索層數(shù)等。

      2.2控制器實(shí)現(xiàn)

      上述代碼通過(guò)實(shí)現(xiàn)了對(duì)“洛陽(yáng)政府網(wǎng)站”的站內(nèi)爬?。菏紫?,創(chuàng)建一個(gè)BFSController對(duì)象;其次,限定最大采集任務(wù)量為100個(gè)頁(yè)面;再次,通過(guò)設(shè)置URL過(guò)濾器要求擴(kuò)展鏈接中必須包含“l(fā)y.gov.cn”字符串,從而保證“站內(nèi)搜索”;最后,將網(wǎng)站首頁(yè)(http://www.ly.gov.cn/)作為起始種子開(kāi)啟爬蟲(chóng)任務(wù)。執(zhí)行上述代碼,運(yùn)行結(jié)果如圖5所示。

      圖5爬蟲(chóng)運(yùn)行結(jié)果

      3 實(shí)時(shí)爬蟲(chóng)控制器

      此前的爬蟲(chóng)控制器要等任務(wù)全部完成后才能返回結(jié)果,這并不符合實(shí)際需求。由于爬蟲(chóng)在開(kāi)放的網(wǎng)絡(luò)環(huán)境中運(yùn)行,任何意外情況都可能發(fā)生,例如斷網(wǎng)、停電、死機(jī)、誤操作、服務(wù)器故障等。若爬蟲(chóng)程序在結(jié)果返回之前就異常退出或無(wú)法繼續(xù)運(yùn)行,那么此前的工作也就變成徒勞。當(dāng)采集任務(wù)量很大時(shí),即使采集過(guò)程沒(méi)有遇到異常情況,爬蟲(chóng)控制器也不可能一次性返回所有結(jié)果,這就需要對(duì)下載內(nèi)容進(jìn)行實(shí)時(shí)保存。

      3.1 控制器設(shè)計(jì)

      根據(jù)上述分析,我們對(duì)控制器提出以下改進(jìn):①采集結(jié)果不再等任務(wù)全部完成后一并返回,而是每下載一個(gè)任務(wù)就觸發(fā)回調(diào)機(jī)制(回調(diào)方法由用戶(hù)指定,可進(jìn)行實(shí)時(shí)保存或進(jìn)一步抽取)。②可以保存當(dāng)前任務(wù)場(chǎng)景(Save),也可以從已保存的場(chǎng)景中恢復(fù)任務(wù)并繼續(xù)執(zhí)行(Restore)。③由用戶(hù)設(shè)置一個(gè)自動(dòng)保存數(shù)量(M),爬蟲(chóng)每采集M個(gè)任務(wù)就自動(dòng)保存一次任務(wù)場(chǎng)景;即使有異常情況發(fā)生,需要重新下載的任務(wù)最多也不會(huì)超過(guò)M個(gè)。改進(jìn)后的爬蟲(chóng)控制器具有一定的實(shí)時(shí)處理能力,我們稱(chēng)之為“實(shí)時(shí)爬蟲(chóng)控制器”(如圖6所示)。

      圖6實(shí)時(shí)爬蟲(chóng)控制器

      3.2 控制器實(shí)現(xiàn)

      圖7爬蟲(chóng)任務(wù)存放目錄

      4 結(jié)語(yǔ)

      筆者在項(xiàng)目實(shí)踐中發(fā)現(xiàn):Web新技術(shù)層出不窮,網(wǎng)頁(yè)結(jié)構(gòu)千差萬(wàn)別,業(yè)務(wù)數(shù)據(jù)多種多樣,采集目標(biāo)各不相同。面對(duì)個(gè)性化的數(shù)據(jù)采集需求,沒(méi)有哪一款網(wǎng)絡(luò)爬蟲(chóng)能包打天下。在已有爬蟲(chóng)框架的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā),是一種高效可行的方法。實(shí)驗(yàn)結(jié)果表明:本文所提出的輕量級(jí)爬蟲(chóng)框架是功能完備的,所設(shè)計(jì)的實(shí)時(shí)爬蟲(chóng)控制器是高效易用的。在控制器的實(shí)現(xiàn)過(guò)程中也涉及到了下載器和解析器,但由于篇幅所限文中未能詳細(xì)介紹。若需要完整的實(shí)現(xiàn)代碼,可通過(guò)電子郵箱聯(lián)系作者。

      猜你喜歡
      爬蟲(chóng)框架控制器
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      框架
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      廣義框架的不相交性
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      一種基于OpenStack的云應(yīng)用開(kāi)發(fā)框架
      模糊PID控制器設(shè)計(jì)及MATLAB仿真
      MOXA RTU控制器ioPAC 5542系列
      宁强县| 淳化县| 沂南县| 金华市| 聂荣县| 和平县| 开远市| 聂荣县| 新疆| 阳朔县| 建德市| 岱山县| 卓资县| 阳泉市| 望奎县| 南投市| 沾化县| 巴里| 临沂市| 垫江县| 宣恩县| 牡丹江市| 商水县| 德化县| 天津市| 九寨沟县| 白水县| 施甸县| 凌海市| 庐江县| 治多县| 夏津县| 阿勒泰市| 阆中市| 沽源县| 离岛区| 新蔡县| 定结县| 晋州市| 依安县| 青田县|