国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

分布式網(wǎng)絡(luò)爬蟲設(shè)計

2017-10-13 15:49:22郭丙琴陳愛武
湖南科技學院學報 2017年6期
關(guān)鍵詞:爬蟲頁面客戶端

郭丙琴陳愛武

?

分布式網(wǎng)絡(luò)爬蟲設(shè)計

郭丙琴1陳愛武2

(1.湖南科技學院 教學質(zhì)量管理處,湖南 永州 425199;2.湖南科技學院 電子與信息工程學院,湖南 永州 425199)

網(wǎng)絡(luò)爬蟲是互聯(lián)網(wǎng)信息獲取的重要工具之一,其性能的好壞直接影響到互聯(lián)網(wǎng)信息檢索的準確性,互聯(lián)網(wǎng)信息復(fù)雜多變,造成傳統(tǒng)方法的網(wǎng)絡(luò)爬蟲容易抓取到錯誤信息。論文在此基礎(chǔ)上提出了一種并行和分布式技術(shù)進行設(shè)計,并通過招聘網(wǎng)頁信息抓取的實驗,實驗結(jié)果證明該網(wǎng)絡(luò)爬蟲性能穩(wěn)定,可以提升抓取信息的準確性。

分布式;網(wǎng)絡(luò)爬蟲;Python;搜索引擎

1 引 言

搜索引擎是基于一種網(wǎng)絡(luò)爬蟲技術(shù)來抓取Web網(wǎng)頁、文檔、圖片、音頻、視頻等信息,并通過索引來組織這些信息,設(shè)計性能優(yōu)良的網(wǎng)絡(luò)爬蟲是搜索引擎重要工作之一[1]。網(wǎng)絡(luò)爬蟲始于一張被稱作種子的統(tǒng)一資源地址(URLs)列表,當網(wǎng)絡(luò)爬蟲訪問這些統(tǒng)一資源定位器時,它們會甄別出頁面上所有的超鏈接,并將它們寫入一張“待訪列表”,即所謂“爬行疆域”(Crawl Frontier),此疆域上的統(tǒng)一資源地址將被按照一套策略循環(huán)訪問。如果爬蟲在執(zhí)行的過程中復(fù)制歸檔和保存網(wǎng)站上的信息,這些檔案通常儲存,使它們可以被查看。網(wǎng)絡(luò)爬蟲只能在給定時間內(nèi)下載有限數(shù)量的網(wǎng)頁,所以設(shè)計大容量體積的網(wǎng)絡(luò)爬蟲時需要優(yōu)先考慮其下載,而互聯(lián)網(wǎng)資源瞬息萬變,網(wǎng)絡(luò)爬蟲下載的網(wǎng)頁在使用前就可能已經(jīng)被修改甚至是刪除了。另外,服務(wù)器端軟件所生成的統(tǒng)一資源地址數(shù)量龐大,所以網(wǎng)絡(luò)爬蟲難以避免的采集到重復(fù)內(nèi)容,根據(jù)超文本協(xié)議“顯示請求”(HTTP GET)的參數(shù)的無盡組合所返回的頁面中,只有很少一部分傳回唯一的內(nèi)容等等,這些問題是網(wǎng)絡(luò)爬蟲設(shè)計所面臨的基本問題[2]。

論文通過招聘網(wǎng)站的職位信息抓取的實驗進行了設(shè)計和研究,并且對抓取的數(shù)據(jù)進行數(shù)據(jù)分析,解決數(shù)據(jù)的去重問題、分布式問題和web開發(fā)的整合問題等。

2 性能分析與模塊設(shè)計

2.1 性能分析

由于網(wǎng)絡(luò)爬蟲是對互聯(lián)網(wǎng)上數(shù)據(jù)進行處理,信息量非常大,因此對性能的要求是非常高的,所以在設(shè)計時一定要考慮其性能優(yōu)化問題,文獻顯示[3,4],在設(shè)計網(wǎng)絡(luò)爬蟲是需要考慮的主要性能包括數(shù)據(jù)庫查詢、程序執(zhí)行的效率、網(wǎng)絡(luò)IO流高低等,另外對挖取到的網(wǎng)頁進行解析時,務(wù)必要保證解析結(jié)果的準確性,這樣才能保證爬蟲運行的穩(wěn)定性,一旦解析出錯,會導(dǎo)致大量的垃圾數(shù)據(jù)產(chǎn)生,極大的影響爬蟲的運行效率。在爬蟲運行過程中,一定要做到可監(jiān)控,即使有意外的情況發(fā)生,也能及時的定位到錯誤。而且還可以通過監(jiān)控頁面的數(shù)據(jù)及時了解爬蟲的工作性能并保證爬蟲在每個時刻都達到最優(yōu)的狀態(tài)[5]。

2.2模塊構(gòu)成

論文設(shè)計的網(wǎng)絡(luò)爬蟲(crawler)主要包含以下幾個基本模塊:扒取任務(wù)分配模塊、任務(wù)執(zhí)行模塊(客戶端)、頁面解析模塊、數(shù)據(jù)處理模塊、運行監(jiān)控模塊,具體結(jié)構(gòu)體系如圖1所示。

根據(jù)圖1所示的模塊構(gòu)成,網(wǎng)絡(luò)爬蟲運行流程是,首先手動創(chuàng)建多個搜索條件,每一個Session對應(yīng)一個搜索條件,當網(wǎng)絡(luò)爬蟲客戶端啟動時會自動請求爬蟲服務(wù)器(SERVER),服務(wù)器首先根據(jù)客戶端的IP驗證客戶端申請的有效性;如果判斷是非正常的客戶端請求,服務(wù)端不返回任何數(shù)據(jù)。如果判斷客戶端請求正常,服務(wù)端會將客戶端發(fā)過來的html頁面進行GZIP解壓(為減少網(wǎng)絡(luò)流量,客戶端從網(wǎng)站上下載的html頁面會進行GZIP壓縮后再發(fā)送給服務(wù)器),然后傳給相應(yīng)的callback函數(shù)進行處理。當callback處理完成,服務(wù)端根據(jù)客戶端的申請生成一個當前Session的Queue,并將生成的Queue的信息返回客戶端。論文設(shè)計的基于招聘網(wǎng)頁信息網(wǎng)絡(luò)爬蟲Callback的工作模式分兩種類型,列表頁面和詳情頁面,列表頁面在解析的時候會將所有詳情頁的url和職位(公司)的基本信息解析出來,然后對解析出來的url進行去重、有效性檢查等處理,最后根據(jù)處理后的url生成詳情頁的Queue。詳情頁面在解析時主要是將職位(公司)的詳細信息提取出來,主要包括職位名稱、薪資、招聘信息發(fā)布時間、職位描述等信息。

3 系統(tǒng)分析與實現(xiàn)

論文的網(wǎng)絡(luò)爬蟲是針對招聘網(wǎng)站公司名稱及職位信息而設(shè)計的,考慮到后期代碼的擴展和維護,所以程序的整體框架采用面向?qū)ο蟮乃季S,在程序設(shè)計過程中,網(wǎng)絡(luò)爬蟲實現(xiàn)了一個爬蟲的基類(BaseCrawler),這樣在以后維護時如需要加入新的招聘網(wǎng)站的時候,只需要實現(xiàn)一個繼承于BaseCrawler的招聘網(wǎng)站專用的子類和對應(yīng)的解析器。在設(shè)計Resource的時候,由于監(jiān)控資源類和爬蟲資源類功能上的差異性,所以將其分開設(shè)計,使用的框架要求每一個Resource綁定一個相關(guān)的Model,而監(jiān)控資源類和爬蟲資源類兩者綁定的Model存在一點沖突,所以最后在綁定Model的時候存在一些的不合理性,設(shè)計Session和Queue時,考慮到每一個搜索條件會產(chǎn)生不同的搜索結(jié)果,所以利用Session將各個搜索條件分開,讓Queue來表示每一次的請求動作,這樣設(shè)計方法便于在網(wǎng)絡(luò)爬蟲運行時及時發(fā)現(xiàn)bug保證程序結(jié)構(gòu)的清晰度。

3.1爬行策略實現(xiàn)

網(wǎng)絡(luò)爬蟲程序的初衷是盡可能遍歷每一搜索條件所有的頁面,所以論文采用廣度優(yōu)先算法的理論,廣度優(yōu)先算法理論上能夠覆蓋更多的節(jié)點,在扒取招聘網(wǎng)站信息的時候,先根據(jù)特定搜索條件將所有職位列表下載下來,然后再依次下載相關(guān)的職位詳情。

圖1.Crawler模塊組成

圖2.URL節(jié)點分布圖

如圖2所示,假如A代表初始URL,BCDEF為根據(jù)A節(jié)點獲取的5個URL,G和HI為根據(jù)F、E獲取的3個URL,以此類推。那么這些URL獲取的順序就是ABCDEFHIG這樣一個順序,當通過E節(jié)點獲取到H節(jié)點的URL之后,并不會馬上進行下載,而是先解析同E在同一層中的F節(jié)點對應(yīng)的URL,當這一層URL全部下載完后,再開始下一層URL下載。

3.2 Server端并行方案實現(xiàn)

我們采用gunicorn結(jié)合gevent的方式實現(xiàn)并行訪問機制,雖然多線程的方案能夠減少進程創(chuàng)建時候帶來的開銷,但是對于臨界資源的訪問控制等變得更加的復(fù)雜,需要考慮的因素更多,這樣導(dǎo)致開發(fā)的難度大大提升。gunicorn和gevent支持pip直接下載安裝,只需兩句簡單的shell命令即可安裝完成,為了結(jié)合gevent使用,我們只需要在爬蟲的啟動程序中加入代碼即可實現(xiàn)。

網(wǎng)絡(luò)爬蟲對招聘網(wǎng)站信息監(jiān)控頁面曲線如圖3所示。

圖3.監(jiān)控頁面曲線圖

3.3爬行策略優(yōu)化

爬蟲一般正常運行了一段時間后,扒取速度就會變得越來越慢,經(jīng)大量實驗證明這種速度變慢是由于服務(wù)器的接口的性能所產(chǎn)生的問題,網(wǎng)絡(luò)爬蟲在建表的時候,生成聯(lián)合索引,所以導(dǎo)致查詢速度非常慢,另外,在搜索強制加載的Queue的時候,可能就要進行文件排序,這種文件排序會導(dǎo)致搜索速度降低,我們在進行策略優(yōu)化時只需將代碼中的搜索條件改為唯一。

結(jié)束語

論文基于分布式方法進行網(wǎng)絡(luò)爬蟲的設(shè)計,并具體針對招聘網(wǎng)站的信息進行實驗,實驗結(jié)果顯示論文設(shè)計的網(wǎng)絡(luò)爬蟲性能穩(wěn)定,符合互聯(lián)網(wǎng)和大數(shù)據(jù)搜索引擎的基本要求。但存在多個客戶端同時工作的時候,可能會導(dǎo)致Mysql的死鎖(deadlock),雖然不會影響爬蟲的正常運行,但是對爬蟲的運行效率會造成一定程度的影響。

[1]李勇,韓亮.主題搜索引擎中網(wǎng)絡(luò)爬蟲的搜索策略研究[J].計算機工程與科學,2008,(3): 4-6.

[2]劉金紅,陸余良.主題網(wǎng)絡(luò)爬蟲研究綜述[J].計算機應(yīng)用研究,2007,(10):26-29.

[3]孫立偉,何國輝,等.網(wǎng)絡(luò)爬蟲技術(shù)的研究[J].電腦知識與技術(shù),2010,(15):4112-4115.

[4]唐波.網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2009,(11):2867-2868.

[5]詹恒飛,楊岳湘,等.Nutch分布式網(wǎng)絡(luò)爬蟲研究與優(yōu)化[J].計算機科學與探索, 2011,(1):68-74.

(責任編校:宮彥軍)

2016-08-26

2015年永州市科技計劃項目(永科發(fā)[2015]9號No.22)。

郭丙琴(1981-),女,廣西鹿寨人,研究方向為信息技術(shù)處理。

TP393

A

1673-2219(2017)06-0021-02

猜你喜歡
爬蟲頁面客戶端
利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
刷新生活的頁面
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
電子測試(2018年1期)2018-04-18 11:53:04
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
客戶端空間數(shù)據(jù)緩存策略
同一Word文檔 縱橫頁面并存
霍邱县| 基隆市| 龙口市| 库车县| 盐边县| 略阳县| 皋兰县| 鞍山市| 澳门| 姜堰市| 铁岭市| 子洲县| 博客| 新疆| 澜沧| 光泽县| 琼海市| 砀山县| 罗田县| 青田县| 台南市| 凤冈县| 南召县| 渝北区| 田林县| 罗定市| 杭锦后旗| 临潭县| 敦煌市| 来宾市| 富宁县| 沈阳市| 松溪县| 富源县| 翼城县| 措美县| 左权县| 桦甸市| 五常市| 建昌县| 南投市|