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

        ?

        網(wǎng)絡(luò)數(shù)據(jù)采集框架Nutch及其應(yīng)用研究

        2019-10-15 12:43:22周飚
        中國(guó)管理信息化 2019年18期

        周飚

        [摘 要]隨著大數(shù)據(jù)與云計(jì)算、物聯(lián)網(wǎng)、人工智能進(jìn)一步融合,各行各業(yè)產(chǎn)生了海量電子化數(shù)據(jù),建立大數(shù)據(jù)應(yīng)用首要解決的問題就是采集數(shù)據(jù),其中,Apache Nutch是用于數(shù)據(jù)采集的爬蟲框架。為采集若干人才招聘網(wǎng)站職位需求數(shù)據(jù),采用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),采用Nutch實(shí)現(xiàn)網(wǎng)站數(shù)據(jù)采集,采用排程框架Quartz實(shí)現(xiàn)數(shù)據(jù)定時(shí)采集和更新。

        [關(guān)鍵詞]Nutch;分布式;爬蟲框架;Crawler Quartz排程

        doi:10.3969/j.issn.1673 - 0194.2019.18.078

        [中圖分類號(hào)]TP391.1[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2019)18-0-03

        0? ? ?引 言

        未來大數(shù)據(jù)產(chǎn)業(yè)發(fā)展出現(xiàn)兩大趨勢(shì):①與云計(jì)算、人工智能等前沿創(chuàng)新技術(shù)深度融合,實(shí)現(xiàn)超大規(guī)模數(shù)據(jù)運(yùn)算,智能化、自動(dòng)化的海量數(shù)據(jù)分析,在短時(shí)間內(nèi)完成復(fù)雜度較高、精密度較高的信息處理;②制造業(yè)產(chǎn)品從市場(chǎng)規(guī)劃、設(shè)計(jì)、制造、銷售到維護(hù)整個(gè)生命周期會(huì)產(chǎn)生大量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),形成制造業(yè)大數(shù)據(jù),為使產(chǎn)品制造全過程變得更加敏捷、精準(zhǔn)和智能,企業(yè)不斷升級(jí)制造業(yè)的大數(shù)據(jù)解決方案,助力傳統(tǒng)制造業(yè)迅速轉(zhuǎn)型與發(fā)展。

        世界各國(guó)已將大數(shù)據(jù)上升為國(guó)家戰(zhàn)略,大數(shù)據(jù)在推動(dòng)我國(guó)經(jīng)濟(jì)轉(zhuǎn)型升級(jí)過程中發(fā)揮著至關(guān)重要的作用。從大數(shù)據(jù)產(chǎn)業(yè)層級(jí)來看,主要分為3層,從底層到上層分別是基礎(chǔ)支撐層、數(shù)據(jù)服務(wù)層和融合應(yīng)用層。面對(duì)來自政府、工業(yè)、農(nóng)業(yè)、交通、商品交易和互聯(lián)網(wǎng)等各方面巨大的數(shù)據(jù),發(fā)展大數(shù)據(jù)應(yīng)用亟待建立起穩(wěn)定高效的數(shù)據(jù)采集和存儲(chǔ)的基礎(chǔ)設(shè)施。數(shù)據(jù)從哪里來,如何采集數(shù)據(jù),是首先要解決的問題。

        1? ? ?網(wǎng)站數(shù)據(jù)采集

        互聯(lián)網(wǎng)網(wǎng)站會(huì)產(chǎn)生大量開放的非結(jié)構(gòu)化和結(jié)構(gòu)化網(wǎng)頁(yè)數(shù)據(jù)。對(duì)于這些數(shù)據(jù),企業(yè)可以通過網(wǎng)站提供的公共API和網(wǎng)頁(yè)爬蟲從網(wǎng)站上獲取。網(wǎng)頁(yè)爬蟲適用所有可以訪問的網(wǎng)站,無論網(wǎng)站是否提供了API,都可以進(jìn)行數(shù)據(jù)采集,這種方案不存在局限性。目前,常用的網(wǎng)頁(yè)爬蟲系統(tǒng)有Nutch、Crawler4j、Scrapy等框架。本文將對(duì)Nutch在網(wǎng)頁(yè)數(shù)據(jù)采集方面進(jìn)行初步研究。

        2? ? ?Nutch技術(shù)介紹

        Apache Nutch是一個(gè)高度可擴(kuò)展和可伸縮性的分布式爬蟲框架。Nutch通過分布式抓取網(wǎng)頁(yè)數(shù)據(jù),并由Hadoop支持,通過提交MapReduce任務(wù)來抓取網(wǎng)頁(yè)數(shù)據(jù),可以將網(wǎng)頁(yè)數(shù)據(jù)存儲(chǔ)在HDFS分布式文件系統(tǒng)中。Nutch可以進(jìn)行分布式多任務(wù)的數(shù)據(jù)爬取、存儲(chǔ)和索引。由于多個(gè)計(jì)算機(jī)并行做爬取任務(wù),Nutch可以充分利用多個(gè)計(jì)算機(jī)的計(jì)算資源和存儲(chǔ)能力,大大提高系統(tǒng)爬取數(shù)據(jù)能力。Nutch在搜索引擎中負(fù)責(zé)爬取網(wǎng)頁(yè),同時(shí)自動(dòng)維護(hù)網(wǎng)頁(yè)的URL信息,例如,相同網(wǎng)頁(yè)去重、網(wǎng)頁(yè)定時(shí)更新、網(wǎng)頁(yè)重定向。Nutch采用了MapReduce分布式爬取和解析,具有良好的水平擴(kuò)展性。Nutch 2.x引入了Gora作為存儲(chǔ)抽象層,從而支持各種傳統(tǒng)SQL數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù),如MySQL、HBase、Cassandra等。

        只看Apache Nutch單任務(wù)網(wǎng)頁(yè)爬蟲,從總體上分為3個(gè)主要部分,即爬行、索引和搜索,各部分之間的協(xié)作關(guān)系是Nutch根據(jù)目標(biāo)網(wǎng)址列表及層級(jí)訪問網(wǎng)站,抓取內(nèi)容并進(jìn)行存儲(chǔ),然后對(duì)這些內(nèi)容建立索引,在索引的基礎(chǔ)上完成所需數(shù)據(jù)的搜索。Nutch基本運(yùn)行流程包含5個(gè)步驟:①將起始URL集合注入Nutch系統(tǒng)中;②生成片段文件,其中,包含將要抓取的URL地址,然后根據(jù)URL地址在互聯(lián)網(wǎng)上抓取相應(yīng)內(nèi)容;③解析所抓取到的網(wǎng)頁(yè),并分析其中的文本和數(shù)據(jù);④根據(jù)新抓取網(wǎng)頁(yè)中的URL集合更新起始URL集合,并再次進(jìn)行抓取;⑤對(duì)抓取到的網(wǎng)頁(yè)內(nèi)容建立索引,生成索引文件存放在系統(tǒng)中。從用戶角度來看,Nutch提供了一個(gè)基于Tomcat的查詢應(yīng)用程序,允許用戶輸入詞條,Nutch以Lucene為搜索引擎在索引文件中進(jìn)行搜索,并將相應(yīng)的結(jié)果返回給用戶。

        3? ? ?案例及解決方案研究

        本文基于Nutch2.1爬蟲框架結(jié)合其他技術(shù)來研究如何采集各個(gè)人才招聘網(wǎng)站職位需求數(shù)據(jù),為中、高等職業(yè)院校主管部門在專業(yè)設(shè)置、招生就業(yè)方面提供數(shù)據(jù)分析依據(jù)。

        (1)建立Eclipse開發(fā)環(huán)境下Nutch+MySQL二次開發(fā)環(huán)境。下載Nutch 2.2.1源碼,修改相關(guān)配置文件,利用ant工具構(gòu)建Eclipse二次開發(fā)項(xiàng)目,在Eclipse開發(fā)環(huán)境中導(dǎo)入該項(xiàng)目。創(chuàng)建Java Maven項(xiàng)目,在pom.xml文件中配置好Nutch,依賴各個(gè)jar包并自動(dòng)下載。

        (2)安裝MySQL數(shù)據(jù)庫(kù)服務(wù)器,創(chuàng)建后臺(tái)數(shù)據(jù)庫(kù)及webpage表。

        (3)配置Nutch,使其采用MySQL關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)。修改/ivy/ivy.xml文件的代碼如下。

        (4)項(xiàng)目數(shù)據(jù)庫(kù)連接配置。修改gora.properties,以連接到指定的后臺(tái)數(shù)據(jù)庫(kù),

        ora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

        gora.sqlstore.jdbc.url=jdbc:mysql://數(shù)據(jù)庫(kù)服務(wù)器IP地址:端口/后臺(tái)數(shù)據(jù)庫(kù)名

        gora.sqlstore.jdbc.user=XXXX(連接數(shù)據(jù)庫(kù)的用戶名)

        gora.sqlstore.jdbc.password=******(連接數(shù)據(jù)庫(kù)的密碼)

        (5)配置nutch-site.xml文件,添加6個(gè)property。第1個(gè)property的name為http.agent.name,value為YourNutchSpider;第2個(gè)property的name為http.accept.language,value為ja-jp, en-us,en-gb,en;q=0.7,*;q=0.3;第3個(gè)property的name為storage.data.store.class,value為org.apache.gora.sql.store.SqlStore;第4個(gè)property的name為parser.character.encoding.default,value為utf-8;第5個(gè)property的name為plugin.includes,value為protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|urlnormalizer-(pass|regex|basic)|scoring-opic;第6個(gè)property的name為generate.batch.id,value為*。

        配置格式如下所示:

        屬性名

        屬性值

        描述

        (6)配置Nutch要訪問的種子網(wǎng)站域名。在項(xiàng)目根目錄下,建立urls目錄,然后在目錄下建立一個(gè)文本文件,文件名為seed.txt,內(nèi)容是爬取的人才網(wǎng)站域名。

        (7)調(diào)用Nutch API。Nutch本身提供了Crawler類來執(zhí)行數(shù)據(jù)爬蟲的命令??梢允褂肏adoop的ToolRunner來運(yùn)行Crawl工具,自定義Java類MyCrawler.java,在main方法中調(diào)用ToolRunner.run方法運(yùn)行Crawler,主要代碼如下。

        public class MyCrawler {

        public static void main(String[] args) {

        String crawlArg = "urls -depth 1";

        try {

        ToolRunner.run(NutchConfiguration.create(), new Crawler(), tokenize(crawlArg));

        } catch (Exception e) {

        e.printStackTrace();

        return;

        }

        }

        public static String[] tokenize(String str) {

        StringTokenizer tok = new StringTokenizer(str);

        String tokens[] = new String[tok.countTokens()];

        int i = 0;

        while (tok.hasMoreTokens()) {

        tokens[i] = tok.nextToken();

        i++;

        }

        return tokens;

        }

        }

        (8)為了解決定時(shí)采集最新人才招聘網(wǎng)站的職位需求數(shù)據(jù),引入java排程框架Quartz。將上面實(shí)現(xiàn)網(wǎng)頁(yè)抓取的代碼封裝進(jìn)Job接口的實(shí)現(xiàn)類CrawJob,再利用Quartz排程API實(shí)現(xiàn)定時(shí)執(zhí)行數(shù)據(jù)采集,主要代碼如下。

        //1、創(chuàng)建Scheduler的工廠

        SchedulerFactory sf = new StdSchedulerFactory();

        //2、從工廠中獲取調(diào)度器實(shí)例

        Scheduler scheduler = sf.getScheduler();

        //3、創(chuàng)建JobDetail

        JobDetail jobDetail = JobBuilder.newJob(CrawlJob.class)

        .withDescription("This is a crawl web data job by nutch to DB.")

        .withIdentity("crawlJob", "crawGroup")

        .build();

        //4、創(chuàng)建Trigger

        Trigger t = TriggerBuilder.newTrigger()

        .withDescription("This is a trigger of crawl web data.")

        .withIdentity("crawlTrigger", "crawlTriggerGroup")

        .startAt(startTime)

        .withSchedule(CronScheduleBuilder.cronSchedule("0 */1 * * * ?")).build();

        //5、注冊(cè)任務(wù)和定時(shí)器

        scheduler.scheduleJob(jobDetail, t);

        scheduler.scheduleJob(historyJobDetail, historyTrigger);

        //6、啟動(dòng)調(diào)度器

        scheduler.start();

        上述代碼實(shí)現(xiàn)每隔1分鐘采集一次人才網(wǎng)站的最新數(shù)據(jù)。

        4? ? ?為數(shù)據(jù)分析做準(zhǔn)備

        Nutch將采集到的數(shù)據(jù)存儲(chǔ)到webpage數(shù)據(jù)表中,可根據(jù)數(shù)據(jù)分析需要再定義相關(guān)數(shù)據(jù)表,每隔一段時(shí)間將webpage中的數(shù)據(jù)進(jìn)行解析,存入數(shù)據(jù)表中。考慮性能需要,定時(shí)清除webpage中的歷史數(shù)據(jù)。存入相關(guān)數(shù)據(jù)表中的結(jié)構(gòu)化數(shù)據(jù)為數(shù)據(jù)分析解決了數(shù)據(jù)從哪里來的問題。經(jīng)過數(shù)據(jù)采集、解析和結(jié)構(gòu)化,接著可以根據(jù)業(yè)務(wù)需求進(jìn)行數(shù)據(jù)分析和統(tǒng)計(jì),并可借助圖形展現(xiàn)框架將這些定義良好的有價(jià)值的數(shù)據(jù)進(jìn)行可視化展現(xiàn)。

        5? ? ?下一步研究方向

        以上是以MySQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)存儲(chǔ)來研究Nutch數(shù)據(jù)采集,下一步將MySqL關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)轉(zhuǎn)換成Hoodap分布式存儲(chǔ),利用Nutch相關(guān)技術(shù)建立爬蟲集群,進(jìn)一步研究Nutch的分布式數(shù)據(jù)采集,為更大規(guī)模、更快響應(yīng)數(shù)據(jù)采集做準(zhǔn)備。把Nutch與Hoodap整合起來,Nutch負(fù)責(zé)抓取數(shù)據(jù),Hoodap負(fù)責(zé)存儲(chǔ)數(shù)據(jù),真正建立大數(shù)據(jù)應(yīng)用平臺(tái),結(jié)合全文檢索引擎Lucene/Solr實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)索引和快速檢索。

        主要參考文獻(xiàn)

        [1]朱應(yīng)堅(jiān),陳雪梅,向勇.基于Nutch的分布式電商數(shù)據(jù)采集數(shù)據(jù)研究[J].廣東通信技術(shù),2015(10).

        [2]孫立偉,何國(guó)輝,吳禮發(fā).網(wǎng)絡(luò)爬蟲技術(shù)的研究[J].電腦知識(shí)與技術(shù),2010(15).

        [3]宋豪.基于WiFi的分布式無線數(shù)據(jù)采集系統(tǒng)研究與實(shí)現(xiàn)[D]. 西安:西安理工大學(xué),2018.

        [4]王烽.新型互聯(lián)網(wǎng)中服務(wù)信任自動(dòng)管理機(jī)制設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2018.

        [5]龔延倫.A公司三期工程可行性研究項(xiàng)目的范圍管理[D].成都:電子科技大學(xué),2010.

        [6]王思賢.基于DSP的直接轉(zhuǎn)矩控制系統(tǒng)研究[D].長(zhǎng)沙:中南大學(xué),2009.

        [7]唐湘越.基于DSP的直接轉(zhuǎn)矩控制系統(tǒng)研究[D].大連:大連交通大學(xué),2009.

        [8]宋志堅(jiān).基于LXI的高性能數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2008.

        [9]陳美華.面向P2P環(huán)境的SLBLTrust信任模型及其安全擴(kuò)展機(jī)制研究[D].上海:華東師范大學(xué),2009.

        国产乱妇乱子在线播视频播放网站| 久久这黄色精品免费久| 亚洲日产无码中文字幕| 一区在线播放| 久久精品国产亚洲av豆腐| 国产精品无码制服丝袜| 久久无码av中文出轨人妻| 亚洲一区二区综合色精品| 午夜福利视频男同女同| 亚洲女同性恋激情网站| 免费无码专区毛片高潮喷水| 久久天堂综合亚洲伊人hd妓女| 国产麻豆md传媒视频| 99热这里有免费国产精品| 国内精品熟女一区二区| 国产色第一区不卡高清| 国产精品福利一区二区| 国产午夜福利小视频合集| 欧美成人精品福利在线视频| 日韩av一区二区蜜桃| 风情韵味人妻hd| a级黑人大硬长爽猛出猛进 | 98精品国产高清在线xxxx| 精品人妻码一区二区三区红楼视频 | 美女黄18以下禁止观看| 亚洲av熟女天堂系列| 亚洲一区中文字幕一区| 美女在线一区二区三区视频| 粗大猛烈进出高潮视频| 国产精品亚洲专区无码web| 性色av一区二区三区四区久久| 日韩精品 在线 国产 丝袜| 夜夜嗨av一区二区三区| 国产成人精品无码一区二区老年人| 日韩av在线不卡一区二区| 人与动牲交av免费| 色婷婷综合激情| 亚洲天堂中文字幕君一二三四| 亚洲成人av大片在线观看| 午夜免费福利小电影| 欧美日韩国产成人高清视|