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

        ?

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

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

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

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

        孟軍1,覃???,劉潔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)又被稱(chēng)為網(wǎng)頁(yè)蜘蛛、網(wǎng)絡(luò)機(jī)器人,更經(jīng)常的稱(chēng)為網(wǎng)頁(yè)追逐者,是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本[2]。數(shù)據(jù)爬蟲(chóng)可以在網(wǎng)頁(yè)之間不斷的蠕動(dòng)獲取特定的需要的信息,并將它整理收集保存至用戶(hù)指定的存儲(chǔ)介質(zhì)。傳統(tǒng)垂直網(wǎng)頁(yè)爬蟲(chóng)常常是單機(jī)版的,且操作復(fù)雜,需要編寫(xiě)爬蟲(chóng)腳本。而大多的企業(yè)更是自己開(kāi)發(fā)爬蟲(chóng)程序,這就花費(fèi)了大量的時(shí)間和資源。能力有限的個(gè)人用戶(hù)更是無(wú)法完成獨(dú)立完成爬蟲(chóng)程序的編寫(xiě)。經(jīng)過(guò)大量的研究分析,編寫(xiě)一個(gè)易用的、高效的網(wǎng)絡(luò)爬蟲(chóng)程序,使沒(méi)有編程基礎(chǔ)能力的普通用戶(hù)可快速使用,使企業(yè)用戶(hù)可快速使用或可深度定制使用的網(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)用戶(hù)安裝部署好分布式爬蟲(chóng)系統(tǒng)后,只需編寫(xiě)簡(jiǎn)單的邏輯腳本①腳本是使用一種特定的描述性語(yǔ)言,依據(jù)一定的格式編寫(xiě)的可執(zhí)行文件,又稱(chēng)作宏或批處理文件。代碼即可完成數(shù)據(jù)抓取工作。對(duì)于擁有現(xiàn)成腳本的用戶(hù),只需要通過(guò)客戶(hù)端運(yùn)行腳本即可,客戶(hù)端會(huì)自動(dòng)將腳本上傳到主服務(wù)器,由主服務(wù)器自動(dòng)完成任務(wù)調(diào)度。因此用戶(hù)可以專(zhuān)注于數(shù)據(jù)抓取腳本的邏輯實(shí)現(xiàn)而分布式、數(shù)據(jù)庫(kù)操作等都由爬蟲(chóng)系統(tǒng)完成。

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

        數(shù)據(jù)抓取功能可以幫助用戶(hù)抓取用戶(hù)所需的數(shù)據(jù),例如抓取某一個(gè)或者多個(gè)網(wǎng)站的新聞數(shù)據(jù)、抓取博客網(wǎng)站數(shù)據(jù)等[3]。在這個(gè)模塊下,抓取數(shù)據(jù)需要用戶(hù)自行編寫(xiě)簡(jiǎn)單的爬蟲(chóng)腳本代碼以適應(yīng)不同的網(wǎng)站數(shù)據(jù)格式。用戶(hù)腳本代碼使用Python語(yǔ)言編寫(xiě),系統(tǒng)提供自動(dòng)編碼功能(即用戶(hù)通過(guò)點(diǎn)擊菜單輸入需要的數(shù)據(jù)便可完成簡(jiǎn)單腳本代碼)。用戶(hù)定義好抓取規(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)不需要用戶(hù)“操心”的分布式運(yùn)行功能;用戶(hù)完成抓取腳本后,系統(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)是編寫(xiě)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常被稱(chēng)為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊聯(lián)結(jié)在一起,這為與C#結(jié)合提供了便利。系統(tǒng)關(guān)鍵模塊共有三個(gè),分別為任務(wù)調(diào)度模塊、爬蟲(chóng)模塊和用戶(hù)腳本模塊,其中系統(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)用戶(hù)使用管理器管理任務(wù)時(shí),任務(wù)管理器會(huì)向Client主機(jī)發(fā)送相應(yīng)指令,通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議管理Client主機(jī)任務(wù),讓用戶(hù)管理Client主機(jī)任務(wù)就像管理本地任務(wù)一樣輕松便捷。當(dāng)任務(wù)全部執(zhí)行完畢后,自動(dòng)暫停所有Client主機(jī)。此外,這個(gè)組件還提供定時(shí)管理、多用戶(hù)腳本管理等功能。

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

        (3)用戶(hù)腳本模塊

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

        當(dāng)用戶(hù)腳本完成后,模塊會(huì)自動(dòng)檢查腳本正確性。當(dāng)檢查通過(guò),用戶(hù)便可運(yùn)行腳本。運(yùn)行腳本時(shí),用戶(hù)腳本會(huì)傳遞到爬蟲(chóng)引擎,爬蟲(chóng)引擎通過(guò)InronPython⑥InronPython是一種可以讓C#中運(yùn)行Python腳本的第三方.NET庫(kù)庫(kù)提供的函數(shù)運(yùn)行用戶(hù)的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ù),滿(mǎn)足大多數(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)線(xiàn)性增長(zhǎng),滿(mǎn)足預(yù)期設(shè)計(jì)要求。

        3 結(jié)語(yǔ)

        在信息爆炸的今天,互聯(lián)網(wǎng)的發(fā)展速度就如同爆炸一般席卷全球?;ヂ?lián)網(wǎng)中的信息正在以幾何倍數(shù)激增,搜索引擎能夠滿(mǎn)足用戶(hù)的信息查詢(xún)需求,卻不能滿(mǎn)足用戶(hù)的特殊需求,如:大量數(shù)據(jù)下載,特定格式數(shù)據(jù)抓取等[4]。文章提出了一種高效簡(jiǎn)單的分布式網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu),該結(jié)構(gòu)可以讓用戶(hù)只學(xué)習(xí)簡(jiǎn)單的腳本語(yǔ)言就能完成數(shù)據(jù)抓取工作。但是,這也意味著用戶(hù)需要具有基本編程思維能力才能使用好本軟件。在以后的工作中將繼續(xù)朝著進(jìn)一步簡(jiǎn)化用戶(hù)工作簡(jiǎn)化用戶(hù)腳本生成的方向努力改進(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
        亚洲天堂av免费在线看| 精品精品久久宅男的天堂| 欧美a级毛欧美1级a大片| 久久精品国产亚洲av影院| 亚洲欧美日韩人成在线播放| 国内无遮码无码| 国产三级在线观看性色av| 大香蕉青青草视频在线| 国精产品一区一区三区有限在线 | 日韩精品中文一区二区三区在线| 日韩av无码久久一区二区| 欧美野外疯狂做受xxxx高潮| 思思久久96热在精品不卡| 在线日韩中文字幕乱码视频| 中文字幕亚洲精品在线| 手机看黄av免费网址| 中文字幕人妻av一区二区| 97久久综合区小说区图片专区| 邻居少妇张开腿让我爽视频| 风韵丰满熟妇啪啪区99杏| 国产乱了真实在线观看| 欧美日韩精品一区二区在线视频 | 内射欧美老妇wbb| 久久精品成人欧美大片| 超级少妇一区二区三区| 亚洲男同免费视频网站| 久久精品中文字幕| 日本丰满熟妇bbxbbxhd| 91精品国产91久久综合桃花| 国产一区精品二区三区四区| 77777亚洲午夜久久多喷| 麻豆成人精品国产免费| 亚洲偷自拍另类图片二区| 国产精品av免费网站| 国产乱码一区二区三区精品| 久久精品国产成人| 乱伦一区二| 亚洲中文字幕日本日韩| 日本中文字幕有码网站| 曰本人做爰又黄又粗视频| 巨爆乳中文字幕爆乳区|