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

?

分布式JS解析在Web信息采集系統(tǒng)中的應(yīng)用

2020-02-01 08:57梁元
電子技術(shù)與軟件工程 2020年10期
關(guān)鍵詞:腳本文件夾網(wǎng)頁

梁元

(中國航發(fā)貴州黎陽航空動力有限公司 貴州省貴陽市 550014)

隨著互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)影響力已經(jīng)逐漸滲透在我國的各個(gè)領(lǐng)域,而Web 技術(shù)更是以其具備的方便直觀、豐富表達(dá)等特點(diǎn),逐漸作為Internet 最重要信息發(fā)布傳輸?shù)年P(guān)鍵方式。隨著Web 信息的不斷膨脹,不僅給人們帶來了豐富的資源,同時(shí)也使得人們在應(yīng)用過程中面臨巨大挑戰(zhàn)[1]。所以Web 信息采集正充分發(fā)揮其自身作用,運(yùn)用于站點(diǎn)數(shù)據(jù)分析、安全檢測、Web 圖進(jìn)化、獲取個(gè)性信息或挖掘用戶興趣等服務(wù)中。在傳統(tǒng)HTML 網(wǎng)頁內(nèi)可以通過標(biāo)簽嵌入式向用戶靜態(tài)化呈現(xiàn)頁面內(nèi)容,但是這種傳統(tǒng)的網(wǎng)頁視覺效果,已無法順應(yīng)目前用戶對于網(wǎng)頁信息的顯示所需,需要及時(shí)彌補(bǔ)發(fā)生動態(tài)化網(wǎng)頁語言的技術(shù)弊端。在網(wǎng)頁動態(tài)語言領(lǐng)域研究的逐漸深入,JavaScript 腳本語言已經(jīng)逐漸被廣泛運(yùn)用于網(wǎng)頁開發(fā)技術(shù)領(lǐng)域。本文提出Web 信息采集系統(tǒng)應(yīng)用分布式JS 解析技術(shù)的特點(diǎn),實(shí)現(xiàn)動態(tài)網(wǎng)頁信息采集系統(tǒng),可以與分布式計(jì)算技術(shù)相結(jié)合,實(shí)現(xiàn)更加高效、快速、直觀的運(yùn)行。

1 JS解析技術(shù)概述

1.1 JS腳本語言

JS 技術(shù)是基于LiveScript 語言基礎(chǔ)之上優(yōu)化提出的,為了解決當(dāng)時(shí)服務(wù)器端程序運(yùn)行中的速率緩慢,頻繁服務(wù)器交互時(shí)間過久問題,將JS 加入瀏覽器中能夠向訪問頁面用戶展示最終的瀏覽器運(yùn)行結(jié)果[2]。經(jīng)過展開對JS 技術(shù)語言的學(xué)習(xí)研究,在JS 語腳本語言主要包括以下核心優(yōu)勢特點(diǎn):

(1)基于對象,能夠結(jié)合需要來動態(tài)化創(chuàng)建、改變對象屬性;

(2)事件驅(qū)動,能夠?qū)崿F(xiàn)JS 函數(shù)綁定特定瀏覽器操作;

(3)實(shí)時(shí)性,基于瀏覽器客戶端執(zhí)行JS 腳本程序;

(4)動態(tài)性,JS 技術(shù)對客戶端諸多事件類型加以界定,實(shí)現(xiàn)比較豐富的網(wǎng)頁功能交互;

(5)跨平臺,該技術(shù)可以不受平臺局限;

(6)安全性,能夠有效預(yù)防客戶端用戶信息泄露丟失??傮w正由于JS 語言具有以上特性,所以可以突破傳統(tǒng)信息采集系統(tǒng)的技術(shù)弊端,應(yīng)用Web 信息采集系統(tǒng)中。

1.2 JS腳本解析引擎

在JS 腳本執(zhí)行中對于JS 解析引擎十分依賴,也正是實(shí)現(xiàn)瀏覽器內(nèi)置引擎,才能夠執(zhí)行JS 解析。如今多數(shù)瀏覽器在實(shí)現(xiàn)JS 腳本解析都擁有專門解析引擎,目前比較常用的幾類包括如下:

(1)SpiderMonkey,作為C 語言完成編寫能夠編譯、分析、執(zhí)行JS 腳本的嵌入式引擎;

(2)Chrome V8 作為如今比較流行的瀏覽器之一,高效JS 解析引擎作為網(wǎng)頁打開速度方面出色技術(shù);

(3)Rhino 作為一種能夠在Java 運(yùn)行環(huán)境中執(zhí)行JS 腳本程序。

2 Hadoop分布式計(jì)算

圖1:數(shù)據(jù)文件存儲結(jié)構(gòu)

分布式計(jì)算屬于云計(jì)算一類在應(yīng)用中較其他計(jì)算方法,能夠?qū)崿F(xiàn)更低的各計(jì)算機(jī)通信程度,能夠?qū)崿F(xiàn)系統(tǒng)長期穩(wěn)定運(yùn)行,且可以結(jié)合實(shí)際問題情況,綜合考量計(jì)算機(jī)集群異構(gòu)特點(diǎn)加以確定。劃分問題為小塊每一臺計(jì)算機(jī)都可以處理自己所負(fù)責(zé)的數(shù)據(jù)。并且結(jié)合了分布式存儲技術(shù)、分布式非結(jié)構(gòu)數(shù)據(jù)庫、半結(jié)構(gòu)數(shù)據(jù)庫及任務(wù)調(diào)度、集群計(jì)算等優(yōu)勢[3]。本文通過建立Hadoop 分布式計(jì)算框架,能夠結(jié)合JS 解析技術(shù),從而在應(yīng)用于Web 信息采集系統(tǒng)獲得更加高效穩(wěn)定的技術(shù)效果。

3 動態(tài)頁面腳本提取解析及任務(wù)調(diào)度

3.1 Web信息采集系統(tǒng)架構(gòu)

Web 信息系統(tǒng)通過基于Hadoop 分布式架構(gòu)平臺,成功建立涵蓋基礎(chǔ)平臺模塊、信息采集功能模塊,以及信息服務(wù)以上三大模塊。通過這三大子系統(tǒng)功能模塊,能夠?qū)崿F(xiàn)爬取網(wǎng)頁信息、提取解析腳本、并抽取信息?;贖adoop 該平臺還能夠提供Web 信息采集技術(shù)支撐,實(shí)現(xiàn)數(shù)據(jù)采集,能夠提供信息服務(wù)模塊的所需數(shù)據(jù)。經(jīng)過Nutch 爬蟲系統(tǒng),完成對網(wǎng)頁原始信息文件的爬取后,腳本提取解析轉(zhuǎn)化原本腳本包含在內(nèi)的網(wǎng)頁信息原文件,從而實(shí)現(xiàn)向靜態(tài)網(wǎng)頁文件的成功轉(zhuǎn)化,并完成有關(guān)動態(tài)網(wǎng)頁的抽取轉(zhuǎn)化形成數(shù)據(jù)存儲結(jié)構(gòu),在信息服務(wù)模塊中運(yùn)用實(shí)現(xiàn)系統(tǒng)交互,經(jīng)過分析處理結(jié)構(gòu)化數(shù)據(jù),可以提供用戶所需信息服務(wù)[4]。

3.2 腳本提取解析

提取Web 網(wǎng)頁腳本的工作流程如下:

(1)進(jìn)行DOM 解析,運(yùn)用HTML 文檔解析工具能夠?qū)崿F(xiàn)不同F(xiàn)ilter 的針對性提供,從而成功提取HTML 文檔內(nèi)的DOM 元素,保證了DOM 元素的文檔提取便捷性,形成嵌入式HTML 文檔內(nèi)容,并執(zhí)行腳本文檔重構(gòu)原DOM 樹。

(2)提取JS 腳本。解析HTML 腳本文檔后,便可以結(jié)合JS文檔腳本的DOM 元素方式,對HTML 文檔是否含有腳本程序進(jìn)行判斷。如果包含則會跳轉(zhuǎn)JS 腳本至解析環(huán)境中,如果不包含就會跳轉(zhuǎn)至保存文件。

(3)構(gòu)建腳本環(huán)境,完成JS 腳本抽取后自然需要構(gòu)建解析環(huán)境執(zhí)行腳本,運(yùn)用Rhino 引擎來實(shí)現(xiàn)。

(4)運(yùn)行腳本重構(gòu)DOM 樹。

(5)保存文件,在完成DOM 樹重構(gòu)后,轉(zhuǎn)化HTML 文檔即可實(shí)現(xiàn)動態(tài)頁面轉(zhuǎn)化為靜態(tài)頁面,并在HTFS 中儲存HTML 文檔,從而提供給網(wǎng)頁信息抽取子系統(tǒng)應(yīng)用。

3.3 調(diào)度算法

Hadoop 集群能夠?qū)崿F(xiàn)單個(gè)或多個(gè)作業(yè)同時(shí)處理,并存放于統(tǒng)一隊(duì)列內(nèi),劃分作業(yè)為多個(gè)Map、Reduce 任務(wù)。Hadoop 調(diào)度器能夠?qū)崿F(xiàn)分配這些任務(wù)至集群節(jié)點(diǎn)內(nèi),有效完成作業(yè),且滿足不同作業(yè)任務(wù)需求,對于任務(wù)調(diào)度的整體難度很大程度增加。在執(zhí)行Hadoop 算法調(diào)度策略中,MapReduce 編程模型能夠達(dá)到良好容錯性,在其中工作點(diǎn)的任務(wù)執(zhí)行整體進(jìn)度較其他任務(wù)節(jié)點(diǎn)更慢時(shí),則存在軟硬件配置差異、故障、調(diào)度不當(dāng)?shù)仍?。而Hadoop 可以以任務(wù)進(jìn)度值來實(shí)現(xiàn)落后任務(wù)確定,確定相應(yīng)的任務(wù)進(jìn)度值。任務(wù)處理落后則會對響應(yīng)時(shí)間有所延長,一旦發(fā)生落后任務(wù),那么Hadoop 自然就會對該落后任務(wù)重新完成節(jié)點(diǎn)分配,該機(jī)制即推測執(zhí)行,能夠推測執(zhí)行機(jī)制,成功對落后任務(wù)產(chǎn)生的執(zhí)行效率影響有效減少。在調(diào)度算法采用的評價(jià)指標(biāo)中,主要以作業(yè)任務(wù)的響應(yīng)時(shí)間、平均作業(yè)響應(yīng)時(shí)間、并行拓展及公平性為主。

3.4 腳本提取解析調(diào)度算法設(shè)計(jì)

假設(shè)第i 個(gè)選中節(jié)點(diǎn),該節(jié)點(diǎn)的可使用網(wǎng)絡(luò)集、空閑節(jié)點(diǎn)集分別用Vi、Ei表示,考慮到對于調(diào)度算法效率產(chǎn)生的因素影響,主要表現(xiàn)在Vi節(jié)點(diǎn)的信息處理能力,需要完成數(shù)據(jù)信息處理的Split 大小、自身與所需處理數(shù)據(jù)二者之間的存儲間隔距離。調(diào)度算法的階段選擇公式如下:

結(jié)合以上建立腳本提取解析調(diào)度算法,能夠成功構(gòu)建異構(gòu)集群環(huán)境,確定Hadoop 調(diào)度算法的慢任務(wù),并且根據(jù)具體的推測執(zhí)行,提出相應(yīng)的改進(jìn)優(yōu)化策略。

4 腳本提取解析系統(tǒng)

4.1 系統(tǒng)整體架構(gòu)

結(jié)合以上分析建立Web 網(wǎng)頁爬取Nutch 子系統(tǒng),作為整個(gè)信息采集系統(tǒng)的關(guān)鍵起始端,腳本提取解析系統(tǒng)需要銜接,形成均為HDFS 的數(shù)據(jù)文件系統(tǒng),建立數(shù)據(jù)文件系統(tǒng)結(jié)構(gòu)(見圖1)。基于Nutch 文件存儲結(jié)構(gòu)基礎(chǔ)實(shí)現(xiàn),在Crawl 文件夾中又包括了Crawldb、linkdb、segments 子文件夾。在三個(gè)文件夾中最后一個(gè)文件夾,想要成功抓取網(wǎng)頁數(shù)據(jù)文件,只能需要通過content 文件夾進(jìn)行存儲。在設(shè)計(jì)該系統(tǒng)中需要完成動態(tài)化網(wǎng)頁信息抓取,并轉(zhuǎn)化為靜態(tài)網(wǎng)頁,所以進(jìn)一步拆分content 文件夾為兩個(gè),分別為content_dyn 動態(tài)頁面、content_sta 文件夾靜態(tài)頁面。

根據(jù)圖1 建立的數(shù)據(jù)文件存儲結(jié)構(gòu)框架中,分別包括了以下三個(gè)子系統(tǒng)實(shí)現(xiàn),各系統(tǒng)實(shí)現(xiàn)功能如下:

首先頁面爬取子系統(tǒng)中,能夠成功爬取相關(guān)頁面信息,并實(shí)時(shí)更新URL 信息,在完成首層數(shù)據(jù)爬取時(shí),對于1 鏈接深度URL 對應(yīng)頁面,能夠完成URL 信息從種子文件中進(jìn)行爬取。

其次在腳本提取解析系統(tǒng)中,能夠爬取content_dyn 動態(tài)頁面相關(guān)信息,實(shí)現(xiàn)JS 自動腳本提取解析,最終成功生成靜態(tài)頁面存儲于content_sta 文件夾中。

最后在頁面信息抽取系統(tǒng)中,針對最終生成存儲的content_sta文件夾,進(jìn)行文件內(nèi)容腳本解析,經(jīng)過實(shí)現(xiàn)元數(shù)據(jù)、頁面外部鏈接、內(nèi)部文檔的分別解析后,在URL 數(shù)據(jù)庫中更新封裝,以信息抽取規(guī)則為依據(jù)最終抽取相應(yīng)信息至最終的關(guān)系數(shù)據(jù)庫內(nèi)。

4.2 數(shù)據(jù)文件格式

在Web 信息采集系統(tǒng)中實(shí)現(xiàn)JS 提取解析存儲的數(shù)據(jù)文件,主要包括了三種:

(1)原始網(wǎng)頁庫,作為原本W(wǎng)eb 網(wǎng)頁所爬取的鏈接對應(yīng)原始網(wǎng)頁信息文件,涵蓋了網(wǎng)頁URL、源URL、網(wǎng)頁的內(nèi)容以及具體的爬取時(shí)間;

(2)JS 文件庫,作為完成原始數(shù)據(jù)成功爬取后,以外部鏈接侵入式JS 腳本信息數(shù)據(jù)庫文件,涵蓋了網(wǎng)頁URL、網(wǎng)頁的內(nèi)容以及具體的爬取時(shí)間;

(3)靜態(tài)網(wǎng)頁庫,作為處理存儲網(wǎng)頁動態(tài)信息腳本提取解析后,獲得的靜態(tài)化網(wǎng)頁信息文件,涵蓋了網(wǎng)頁URL、源URL、網(wǎng)頁的內(nèi)容、編碼方式和生成時(shí)間。

5 結(jié)語

通過本文研究探討在Web 信息采集系統(tǒng)中,運(yùn)用分布式JS 解析技術(shù)實(shí)現(xiàn)了信息采集系統(tǒng)設(shè)計(jì),并提出了整個(gè)信息采集系統(tǒng)的設(shè)計(jì)整體說明,包括了頁面爬取子系統(tǒng)、腳本提取解析系統(tǒng)、頁面信息抽取系統(tǒng)。通過JS 解析結(jié)合Hadoop 分布式計(jì)算,提取解析系統(tǒng)的實(shí)際運(yùn)行所處異構(gòu)集群環(huán)境,并在原本Nutch 系統(tǒng)文件的存儲結(jié)構(gòu)基礎(chǔ)之上,設(shè)計(jì)整體系統(tǒng)文件數(shù)據(jù)結(jié)構(gòu)及存儲格式,分別為原始網(wǎng)頁庫、JS 文件庫、靜態(tài)網(wǎng)頁庫三種,并實(shí)現(xiàn)文件結(jié)構(gòu)數(shù)據(jù)文件格式和該系統(tǒng)的不同模塊信息采集功能細(xì)節(jié)。發(fā)現(xiàn)設(shè)計(jì)的該分布式JS解析應(yīng)用于Web 信息采集系統(tǒng)思路,能夠動態(tài)化、高效且準(zhǔn)確的實(shí)現(xiàn)Web 信息采集,為該領(lǐng)域提出出信息采集技術(shù)新思路。

猜你喜歡
腳本文件夾網(wǎng)頁
酒駕
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計(jì)
快樂假期
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
掛在墻上的文件夾
網(wǎng)頁制作在英語教學(xué)中的應(yīng)用
10個(gè)必知的網(wǎng)頁設(shè)計(jì)術(shù)語