• 
    

    
    

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

      ?

      分布式網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)研究

      2017-09-30 03:01:58孟軍覃海奎劉潔甘宇健
      現(xiàn)代計(jì)算機(jī) 2017年24期
      關(guān)鍵詞:爬蟲(chóng)腳本頁(yè)面

      孟軍,覃海奎,劉潔,甘宇健

      分布式網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)研究

      孟軍1,覃海奎2,劉潔2,甘宇健1

      (1.廣西財(cái)經(jīng)學(xué)院電子商務(wù)系,南寧 530000;2.廣西財(cái)經(jīng)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,南寧 530000)

      隨著大數(shù)據(jù)相關(guān)技術(shù)的不斷發(fā)展,數(shù)據(jù)的重要性越來(lái)越大,如何低成本第獲取大量數(shù)據(jù)是一個(gè)值得研究的問(wèn)題。通過(guò)網(wǎng)絡(luò)爬蟲(chóng)采集數(shù)據(jù)是一個(gè)方便且成本較低的網(wǎng)絡(luò)數(shù)據(jù)獲取手段,而為了獲取更多的數(shù)據(jù),單機(jī)運(yùn)行網(wǎng)絡(luò)爬蟲(chóng)顯然是不夠的。因此,研究分布式網(wǎng)絡(luò)爬蟲(chóng)軟件,提出一個(gè)可行且成本較低的實(shí)現(xiàn)方案。

      網(wǎng)絡(luò)爬蟲(chóng);大數(shù)據(jù);分布式

      0 引言

      網(wǎng)絡(luò)爬蟲(chóng)又被稱為網(wǎng)頁(yè)蜘蛛、網(wǎng)絡(luò)機(jī)器人,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者,是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本[2]。數(shù)據(jù)爬蟲(chóng)可以在網(wǎng)頁(yè)之間不斷的蠕動(dòng)獲取特定的需要的信息,并將它整理收集保存至用戶指定的存儲(chǔ)介質(zhì)。傳統(tǒng)垂直網(wǎng)頁(yè)爬蟲(chóng)常常是單機(jī)版的,且操作復(fù)雜,需要編寫爬蟲(chóng)腳本。而大多的企業(yè)更是自己開(kāi)發(fā)爬蟲(chóng)程序,這就花費(fèi)了大量的時(shí)間和資源。能力有限的個(gè)人用戶更是無(wú)法完成獨(dú)立完成爬蟲(chóng)程序的編寫。經(jīng)過(guò)大量的研究分析,編寫一個(gè)易用的、高效的網(wǎng)絡(luò)爬蟲(chóng)程序,使沒(méi)有編程基礎(chǔ)能力的普通用戶可快速使用,使企業(yè)用戶可快速使用或可深度定制使用的網(wǎng)絡(luò)爬蟲(chóng)程序是符合當(dāng)前市場(chǎng)需要的。

      1 系統(tǒng)設(shè)計(jì)

      1.1 系統(tǒng)功能設(shè)計(jì)

      數(shù)據(jù)抓取是網(wǎng)絡(luò)數(shù)據(jù)爬蟲(chóng)的基礎(chǔ)也是核心功能,因此保證數(shù)據(jù)抓取的高效、可靠尤為重要。分布式是目前使用的較多的保證軟件系統(tǒng)高效可靠運(yùn)行的系統(tǒng)架構(gòu)之一。軟件的目標(biāo)實(shí)現(xiàn)當(dāng)用戶安裝部署好分布式爬蟲(chóng)系統(tǒng)后,只需編寫簡(jiǎn)單的邏輯腳本①腳本是使用一種特定的描述性語(yǔ)言,依據(jù)一定的格式編寫的可執(zhí)行文件,又稱作宏或批處理文件。代碼即可完成數(shù)據(jù)抓取工作。對(duì)于擁有現(xiàn)成腳本的用戶,只需要通過(guò)客戶端運(yùn)行腳本即可,客戶端會(huì)自動(dòng)將腳本上傳到主服務(wù)器,由主服務(wù)器自動(dòng)完成任務(wù)調(diào)度。因此用戶可以專注于數(shù)據(jù)抓取腳本的邏輯實(shí)現(xiàn)而分布式、數(shù)據(jù)庫(kù)操作等都由爬蟲(chóng)系統(tǒng)完成。

      1.2 數(shù)據(jù)抓取功能

      數(shù)據(jù)抓取功能可以幫助用戶抓取用戶所需的數(shù)據(jù),例如抓取某一個(gè)或者多個(gè)網(wǎng)站的新聞數(shù)據(jù)、抓取博客網(wǎng)站數(shù)據(jù)等[3]。在這個(gè)模塊下,抓取數(shù)據(jù)需要用戶自行編寫簡(jiǎn)單的爬蟲(chóng)腳本代碼以適應(yīng)不同的網(wǎng)站數(shù)據(jù)格式。用戶腳本代碼使用Python語(yǔ)言編寫,系統(tǒng)提供自動(dòng)編碼功能(即用戶通過(guò)點(diǎn)擊菜單輸入需要的數(shù)據(jù)便可完成簡(jiǎn)單腳本代碼)。用戶定義好抓取規(guī)則后,由系統(tǒng)完成數(shù)據(jù)的抓取、解析、存儲(chǔ)等任務(wù)。

      1.3 分布式運(yùn)行功能

      在處理大數(shù)據(jù)時(shí),分布式運(yùn)行往往都能比單機(jī)運(yùn)行快,對(duì)數(shù)據(jù)抓取操作也一樣。為了更高效抓取數(shù)據(jù),系統(tǒng)需要提供分布式功能。但是,分布式的程序也比單機(jī)程序要復(fù)雜很多。為了簡(jiǎn)單易用且高效數(shù)據(jù)抓取,系統(tǒng)實(shí)現(xiàn)不需要用戶“操心”的分布式運(yùn)行功能;用戶完成抓取腳本后,系統(tǒng)自動(dòng)將腳本中的任務(wù)拆分,讓多臺(tái)電腦同時(shí)進(jìn)行數(shù)據(jù)抓取工作。

      1.4 系統(tǒng)關(guān)鍵模塊設(shè)計(jì)

      爬蟲(chóng)系統(tǒng)使用了C#加Python的兩種語(yǔ)言完成。C#語(yǔ)言強(qiáng)項(xiàng)是編寫Windows桌面應(yīng)用程序,系統(tǒng)使用C#語(yǔ)言完成界面、網(wǎng)絡(luò)通信、分布式、數(shù)據(jù)庫(kù)操作等功能模塊。Python擁有多個(gè)開(kāi)源且免費(fèi)的關(guān)于數(shù)據(jù)抓取的開(kāi)源程序,利用這些程序庫(kù)開(kāi)源很方便實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)抓取模塊。此外Python常被稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊聯(lián)結(jié)在一起,這為與C#結(jié)合提供了便利。系統(tǒng)關(guān)鍵模塊共有三個(gè),分別為任務(wù)調(diào)度模塊、爬蟲(chóng)模塊和用戶腳本模塊,其中系統(tǒng)模塊結(jié)構(gòu)如圖1所示。

      圖1 關(guān)鍵模塊結(jié)構(gòu)圖

      (1)任務(wù)調(diào)度器

      任務(wù)調(diào)度器只運(yùn)行在Server主機(jī),由管理器、隊(duì)列維護(hù)器和數(shù)據(jù)同步器三個(gè)組件組成。

      管理器是Server主機(jī)管理Client主機(jī)的組件。管理器負(fù)責(zé)啟動(dòng)、暫停、關(guān)閉Client主機(jī)的任務(wù)。當(dāng)用戶使用管理器管理任務(wù)時(shí),任務(wù)管理器會(huì)向Client主機(jī)發(fā)送相應(yīng)指令,通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議管理Client主機(jī)任務(wù),讓用戶管理Client主機(jī)任務(wù)就像管理本地任務(wù)一樣輕松便捷。當(dāng)任務(wù)全部執(zhí)行完畢后,自動(dòng)暫停所有Client主機(jī)。此外,這個(gè)組件還提供定時(shí)管理、多用戶腳本管理等功能。

      隊(duì)列維護(hù)器全稱任務(wù)URL②URL:對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址(Uniform Resource Lo?cator)隊(duì)列維護(hù)器,是每一次數(shù)據(jù)爬取任務(wù)中需要從頁(yè)面上爬取數(shù)據(jù)的網(wǎng)頁(yè)URL隊(duì)列,維護(hù)器負(fù)責(zé)對(duì)該URL隊(duì)列的增刪改查。在爬取數(shù)據(jù)過(guò)程中,維護(hù)器會(huì)將未爬URL發(fā)送給各個(gè)電腦上的爬蟲(chóng)完成數(shù)據(jù)爬取工作。當(dāng)爬蟲(chóng)完成一個(gè)URL的任務(wù)后,會(huì)通知維護(hù)器并開(kāi)始準(zhǔn)備接受新的任務(wù)。

      數(shù)據(jù)同步器是分布式高可靠的保障。為保障分布式系統(tǒng)的高可靠性,分布式系統(tǒng)在啟動(dòng)時(shí),系統(tǒng)中的Server主機(jī)會(huì)隨機(jī)從眾多的Client主機(jī)中挑選一臺(tái)備份Server主機(jī)(注:其原本的Client工作照常執(zhí)行),同時(shí)啟動(dòng)其備份進(jìn)程。數(shù)據(jù)同步器組件中有心跳機(jī)制,每次心跳都會(huì)與備份服務(wù)器同步數(shù)據(jù)。如果備份進(jìn)程發(fā)現(xiàn)Server主機(jī)長(zhǎng)時(shí)間沒(méi)進(jìn)行備份操作且無(wú)法聯(lián)系上Server主機(jī)后,自己將變成Server主機(jī),并通知其他Client,同時(shí)挑選新的備份Server。

      (2)爬蟲(chóng)引擎

      爬蟲(chóng)引擎采用Python語(yǔ)言編寫,引用了三個(gè)開(kāi)源的第三方軟件:BeautifulSoup③Beautiful Soup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫(kù)、Selenium④Selenium也是一個(gè)用于Web應(yīng)用程序測(cè)試的工具,可直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣、Twisted⑤Twisted是一個(gè)用Python語(yǔ)言寫的事件驅(qū)動(dòng)的網(wǎng)絡(luò)框架。通過(guò)這三個(gè)第三方軟件可以很方便的編寫需要的爬蟲(chóng)引擎,實(shí)現(xiàn)流程為Selenium負(fù)責(zé)操作瀏覽器和頁(yè)面源碼下載,BeautifulSoup負(fù)責(zé)源碼解析和數(shù)據(jù)提取,Twisted則負(fù)責(zé)內(nèi)部過(guò)程調(diào)度。Selenium可以很方便的訪問(wèn)網(wǎng)頁(yè),將頁(yè)面源碼下載下來(lái),并且提供操作JavaScript和操作頁(yè)面元素的功能。BeautifulSoup則可以很方便的解析網(wǎng)站源碼,可以簡(jiǎn)便快捷的定位頁(yè)面元素。Twist?ed是一個(gè)單線程事件驅(qū)動(dòng)引擎,當(dāng)用戶運(yùn)用selenium下載或操作頁(yè)面元素時(shí),twisted可以以單線程事件驅(qū)動(dòng)模式調(diào)度selenium,而無(wú)需運(yùn)用多線程加鎖模式,從而減少系統(tǒng)資源占用。

      (3)用戶腳本模塊

      本模塊由C#編寫完成,提供一個(gè)人性化交互界面讓用戶完成數(shù)據(jù)爬取腳本。模塊提供腳本的生成、編寫、修改功能。由于用戶腳本采用Python語(yǔ)言完成,對(duì)于不懂編程的用戶,模塊提供簡(jiǎn)單易操作的界面,使得用戶可以很方便地生成腳本。例如,當(dāng)用戶需要循環(huán)運(yùn)行時(shí),只需要輸入循環(huán)的開(kāi)始和結(jié)束,系統(tǒng)就能自動(dòng)生成循環(huán)代碼。對(duì)于學(xué)習(xí)過(guò)Python的用戶,軟件提供良好的編碼環(huán)境,如:語(yǔ)法著色、輸入提示等功能。

      當(dāng)用戶腳本完成后,模塊會(huì)自動(dòng)檢查腳本正確性。當(dāng)檢查通過(guò),用戶便可運(yùn)行腳本。運(yùn)行腳本時(shí),用戶腳本會(huì)傳遞到爬蟲(chóng)引擎,爬蟲(chóng)引擎通過(guò)InronPython⑥InronPython是一種可以讓C#中運(yùn)行Python腳本的第三方.NET庫(kù)庫(kù)提供的函數(shù)運(yùn)行用戶的Python腳本,從而開(kāi)始進(jìn)行數(shù)據(jù)抓取。

      (4)系統(tǒng)測(cè)試

      分布式網(wǎng)絡(luò)爬蟲(chóng)程序測(cè)試

      軟件測(cè)試環(huán)境如下:操作系統(tǒng):Windows 10家庭版、CPU:E3-1231-v3 3.4Ghz、內(nèi)存:16GB、網(wǎng)絡(luò)帶寬:100Mb。

      在考慮了計(jì)算機(jī)的硬件配置和系統(tǒng)效率等因素后,測(cè)試分成:?jiǎn)螜C(jī)版,分布式(2、3臺(tái)服務(wù)器)等不同情況進(jìn)行,測(cè)試運(yùn)行為對(duì)某電商網(wǎng)站數(shù)據(jù)進(jìn)行爬取,測(cè)試結(jié)果如下:

      表1

      由結(jié)果可以看出分布式爬蟲(chóng)的數(shù)據(jù)爬蟲(chóng)速度較高,可以在短時(shí)間內(nèi)獲取大量的頁(yè)面數(shù)據(jù),滿足大多數(shù)場(chǎng)合應(yīng)用需要。隨著爬取服務(wù)器的增加,可以看到數(shù)據(jù)爬取速度的提升。

      2 結(jié)果分析

      網(wǎng)絡(luò)爬蟲(chóng)的主要性能指標(biāo)可以以頁(yè)面采集速度評(píng)價(jià)。軟件爬取效率提升計(jì)算公式如下:

      本次測(cè)試分別測(cè)試運(yùn)行1小時(shí)后,分布式(2服務(wù)器)采集效率為8131頁(yè)面/小時(shí),分布式(3服務(wù)器)采集效率為11914頁(yè)面/小時(shí),單機(jī)版采集效率為4222頁(yè)面/小時(shí)。因此可以得出效率提升分別為2服務(wù)器效率

      可見(jiàn)分布式網(wǎng)絡(luò)爬蟲(chóng)效率隨著服務(wù)器增加呈現(xiàn)爬取速度呈現(xiàn)線性增長(zhǎng),滿足預(yù)期設(shè)計(jì)要求。

      3 結(jié)語(yǔ)

      在信息爆炸的今天,互聯(lián)網(wǎng)的發(fā)展速度就如同爆炸一般席卷全球?;ヂ?lián)網(wǎng)中的信息正在以幾何倍數(shù)激增,搜索引擎能夠滿足用戶的信息查詢需求,卻不能滿足用戶的特殊需求,如:大量數(shù)據(jù)下載,特定格式數(shù)據(jù)抓取等[4]。文章提出了一種高效簡(jiǎn)單的分布式網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu),該結(jié)構(gòu)可以讓用戶只學(xué)習(xí)簡(jiǎn)單的腳本語(yǔ)言就能完成數(shù)據(jù)抓取工作。但是,這也意味著用戶需要具有基本編程思維能力才能使用好本軟件。在以后的工作中將繼續(xù)朝著進(jìn)一步簡(jiǎn)化用戶工作簡(jiǎn)化用戶腳本生成的方向努力改進(jìn)。

      [1]百度百科.大數(shù)據(jù)[EB/OL].http://baike.baidu.com/item/%E5%A4%A7%E6%95%B0%E6%8D%AE/1356941.2017.04.01.

      [2]百度百科.網(wǎng)絡(luò)爬蟲(chóng)[EB/OL].http://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB,2017.04.01.

      [3]劉漢興,劉財(cái)興.主題爬蟲(chóng)的搜索策略研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(12).

      [4]高凱.搜索引擎中信息動(dòng)態(tài)采集策略的研究[J].電子學(xué)報(bào),2007(10).

      [5]蔣志剛,葉勇.Web搜索引擎.NET實(shí)現(xiàn)技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2007(10).

      [6]丁烈云,趙剛.網(wǎng)絡(luò)文化安全及其監(jiān)管關(guān)鍵技術(shù)研究[J].信息網(wǎng)絡(luò)安全,2007(10).

      [7]崔曉波.無(wú)數(shù)據(jù)不AI,無(wú)人工不智能[EB/OL].http://techcrunch.cn/2016/10/26/big-data-and-ai/,2017.04.01.

      Design and Research of Distributed Web Crawler

      MENG Jun1,QIN Hai-kui2,LIU Jie2,GAN Yu-jian1
      (1.Department of Electronic Commerce,Guangxi University of Finance and Economics,Nannig 530000;2.Department of Computer Science,Guangxi University of Finance and Economics,Nannig 530000)

      With the sustainable development of big data's related technology,how to get large amount of data at low cost becomes a question worthy of study.It is a convenient and low-cost way to collect network data by web crawlers.However,it is obviously insufficient to get more data through standalone network crawler.Therefore,studies the distributed web crawler software and puts forward a feasible and low-cost action program.

      Data Network Crawler;Big Data;Distributed

      1007-1423(2017)24-0062-04

      10.3969/j.issn.1007-1423.2017.24.015

      孟軍(1995-),男,廣西桂林,本科,學(xué)生,研究方向?yàn)閿?shù)據(jù)挖掘

      覃???993-),男,廣西宜州,本科,學(xué)生,研究方向?yàn)閿?shù)據(jù)挖掘

      劉潔(1997-),女,湖南婁底,本科,學(xué)生,研究方向?yàn)閿?shù)據(jù)爬蟲(chóng)

      甘宇?。?986-),男,廣西玉林人,碩士研究生,講師;研究方向?yàn)閿?shù)據(jù)挖掘,Email:47237862@qq.com

      2017-05-25

      2017-08-15

      猜你喜歡
      爬蟲(chóng)腳本頁(yè)面
      大狗熊在睡覺(jué)
      酒駕
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      刷新生活的頁(yè)面
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      安奇奇與小cool 龍(第二回)
      數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      快樂(lè)假期
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      蒲城县| 泰顺县| 大埔区| 鄂托克旗| 靖安县| 和林格尔县| 沙洋县| 保亭| 上杭县| 自贡市| 黄石市| 五指山市| 改则县| 财经| 花莲县| 讷河市| 自治县| 祥云县| 琼中| 宜黄县| 沂源县| 上高县| 兴海县| 西盟| 宝鸡市| 长寿区| 石首市| 海兴县| 达孜县| 渝北区| 柞水县| 五家渠市| 安阳市| 博野县| 六枝特区| 祁东县| 绥棱县| 冷水江市| 棋牌| 慈溪市| 噶尔县|