日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 《物聯(lián)網(wǎng)技術(shù)》雜志
[導(dǎo)讀]摘 要:當(dāng)前互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,針對(duì)網(wǎng)絡(luò)上存在的海量數(shù)據(jù)以及動(dòng)態(tài)網(wǎng)站的出現(xiàn),文中提出了一種用戶自定規(guī)則的AJAX網(wǎng)頁(yè)信息采集功能,該功能能夠提取動(dòng)態(tài)網(wǎng)站上的數(shù)據(jù),避免垃圾信息的干擾。與傳統(tǒng)信息提取系統(tǒng)相比,用戶可以自定規(guī)則,確定目標(biāo)網(wǎng)站,半自動(dòng)化以及自定規(guī)則操作,使信息提取更加準(zhǔn)確和高效。

引 言

當(dāng)前在數(shù)據(jù)量龐大的互聯(lián)網(wǎng)世界中,網(wǎng)絡(luò)上的信息存在諸多問(wèn)題。虛假信息、重復(fù)信息、廣告干擾等這些信息往往都是冗余或者無(wú)用的信息,加上互聯(lián)網(wǎng)技術(shù)的發(fā)展與AJAX 技術(shù)的興起,許多站點(diǎn)從可維護(hù)性和增加用戶體驗(yàn)的角度將數(shù)據(jù)與網(wǎng)頁(yè)分離,通過(guò)AJAX 從數(shù)據(jù)庫(kù)動(dòng)態(tài)生成數(shù)據(jù),而有用的信息往往存在于這些數(shù)據(jù)中,但搜索引擎無(wú)法直接搜索到AJAX 網(wǎng)頁(yè)信息[1]。自定規(guī)則的動(dòng)態(tài)網(wǎng)頁(yè)信息能夠采集AJAX 網(wǎng)頁(yè)信息,并且用戶可以自由選取網(wǎng)站并自定采集規(guī)則,功能垂直,目標(biāo)專一,能夠高效且快速地獲取網(wǎng)頁(yè)信息。

1 AJAX網(wǎng)頁(yè)信息生成原理

據(jù)中國(guó)互聯(lián)網(wǎng)中心統(tǒng)計(jì),當(dāng)前中國(guó)的網(wǎng)站有百分之四十多都是動(dòng)態(tài)網(wǎng)站,幾乎占據(jù)了中國(guó)互聯(lián)網(wǎng)的半壁江山,而日常人們主要通過(guò)搜索引擎來(lái)獲取自己感興趣的信息,搜索引擎的核心之一是網(wǎng)絡(luò)蜘蛛(Web Spider)。網(wǎng)絡(luò)蜘蛛通過(guò)給定的起始頁(yè)面按照一定的規(guī)則提取頁(yè)面中的鏈接,直到?jīng)]有鏈接,蜘蛛才停止提取[2]。這其中的過(guò)程僅僅解析了網(wǎng)頁(yè)的源代碼,卻沒(méi)有把網(wǎng)頁(yè)信息寫入網(wǎng)頁(yè)源代碼中,因此爬蟲(chóng)收集的只是沒(méi)有加載動(dòng)態(tài)信息的網(wǎng)頁(yè)資源。當(dāng)用戶瀏覽動(dòng)態(tài)網(wǎng)頁(yè)時(shí),首先在瀏覽器的地址欄輸入網(wǎng)頁(yè)的URL,向?qū)?yīng)的服務(wù)器發(fā)送請(qǐng)求獲取該 URL對(duì)應(yīng)的頁(yè)面,當(dāng)獲取到頁(yè)面時(shí),此時(shí)并沒(méi)有獲取到網(wǎng)頁(yè)的信息,瀏覽器的JS(JavaScript)解析器會(huì)繼續(xù)解析寫在網(wǎng)頁(yè)中的JS 代碼,作為動(dòng)態(tài)網(wǎng)頁(yè),數(shù)據(jù)通過(guò)頁(yè)面中的JS 繼續(xù)向服務(wù)器請(qǐng)求數(shù)據(jù)庫(kù)中的數(shù)據(jù),而傳統(tǒng)的網(wǎng)絡(luò)蜘蛛并沒(méi)有執(zhí)行這些后續(xù)請(qǐng)求,蜘蛛的功能僅相當(dāng)于瀏覽器的第一個(gè)請(qǐng)求網(wǎng)頁(yè)的動(dòng)作,在瀏覽器中通過(guò)查看網(wǎng)頁(yè)源代碼可以看到一些AJAX 信息并沒(méi)有顯示在源代碼中,而網(wǎng)頁(yè)中能夠顯示信息, 正是由于瀏覽器中后續(xù)的JS 解析。該過(guò)程的原理圖如圖1 所示。

自定規(guī)則的AJAX網(wǎng)頁(yè)信息采集功能的設(shè)計(jì)

如圖 1 所示,在該網(wǎng)頁(yè)信息生成的過(guò)程中,只有當(dāng)客戶端請(qǐng)求到頁(yè)面之后,再通過(guò)客戶端中的JS 解析器解析網(wǎng)頁(yè)中的JS 數(shù)據(jù)請(qǐng)求代碼,才會(huì)從數(shù)據(jù)庫(kù)請(qǐng)求數(shù)據(jù)并寫入頁(yè)面。

2 自定規(guī)則采集功能設(shè)計(jì)

根據(jù)前面所分析的原理可知,僅單純的使用一個(gè) get 請(qǐng)求來(lái)獲取 AJAX 頁(yè)面中的信息在原理上是不可行的,因?yàn)榉?wù)器端并不能解析JS 代碼,只有在客戶端才能解析,服務(wù)器端只能夠?qū)⒕W(wǎng)頁(yè)原封不動(dòng)地返回給客戶端,存在于網(wǎng)頁(yè)源代碼中的JS 數(shù)據(jù)請(qǐng)求并沒(méi)有運(yùn)行。作為一套信息采集系統(tǒng),該系統(tǒng)的全部功能模塊必須都放在服務(wù)器環(huán)境中,只有通過(guò)一個(gè)可以完全解析網(wǎng)頁(yè)的引擎才能使服務(wù)器端解析JS 獲取網(wǎng)頁(yè)信息。經(jīng)過(guò)摸索和查找,認(rèn)為JS 的開(kāi)源工具包 PhantomJS 可以完成該項(xiàng)功能??梢詫hantomJS 引擎存放于服務(wù)器端,通過(guò)服務(wù)器端語(yǔ)言來(lái)調(diào)用,這里使用PHP 語(yǔ)言。

2.1 自定規(guī)則功能結(jié)構(gòu)的設(shè)計(jì)

屬于一個(gè)網(wǎng)站的所有頁(yè)面的結(jié)構(gòu)基本類似,網(wǎng)站與網(wǎng)站之間的結(jié)構(gòu)可以完全不同,也可以類似,但網(wǎng)頁(yè)結(jié)構(gòu)幾乎不可能完全一樣,即使存在輕微差別,也會(huì)導(dǎo)致一些信息的提取規(guī)則完全不同。因此一旦寫死了某一個(gè)網(wǎng)站的提取規(guī)則,隨著網(wǎng)站的改版,可能其中頁(yè)面的結(jié)構(gòu)發(fā)生了變化,僅HTML 標(biāo)簽名屬性發(fā)生變化就會(huì)導(dǎo)致抽取規(guī)則的改變,因此用戶自定規(guī)則能夠很好地解決問(wèn)題[3-8]。提取信息的規(guī)則寫在JS 文件中, 除開(kāi) PhantomJS 函數(shù),用戶只需要寫提取網(wǎng)站信息的DOM 規(guī)則。在前臺(tái)設(shè)計(jì)一個(gè)用戶上傳規(guī)則和選取規(guī)則的功能,服務(wù)器端設(shè)定一個(gè)專門存放規(guī)則的文件夾,前臺(tái)能夠讀取用戶上傳的規(guī)則,從而完成目標(biāo)頁(yè)面信息的提取。自定規(guī)則工作原理圖如圖 2 所示。

自定規(guī)則的AJAX網(wǎng)頁(yè)信息采集功能的設(shè)計(jì)

用戶寫入核心的DOM 規(guī)則上傳到規(guī)則庫(kù)。當(dāng)用戶需要使用該規(guī)則時(shí),前臺(tái)可以加載規(guī)則庫(kù)中的文件,通過(guò)選取指定的文件,服務(wù)器將文件名傳入PhantomJS 引擎中,接收網(wǎng)站的鏈接以目標(biāo)網(wǎng)頁(yè)進(jìn)行信息提取,返回信息經(jīng)處理后返回客戶端。

2.2 PhantomJS與PHP通信

服務(wù)器中存放一個(gè) PhantomJS 可執(zhí)行文件, 稱其為PhantomJS 引擎, 該引擎通過(guò)命令窗口運(yùn)行一個(gè)JS 為后綴的文件,該文件中寫入一些PhantomJS 的接口函數(shù)和網(wǎng)頁(yè)鏈接以及信息提取規(guī)則。作為單純的信息提取,JS 文件中的PhantomJS 接口函數(shù)是固定的,它們可以完成解析和加載網(wǎng)頁(yè),使網(wǎng)頁(yè)內(nèi)部的 JS 源代碼完全執(zhí)行。PHP 函數(shù)庫(kù)中存在一個(gè) 調(diào)用可執(zhí)行文件的函數(shù) exec()。利用該函數(shù)調(diào)用 PhantomJS 可執(zhí)行文件,PhantomJS 運(yùn)行用戶自定規(guī)則的 JS 文件,從而 進(jìn)行動(dòng)態(tài)信息的提取。例如 exec("chcp 65001 && cd /d f :/ phantomJS/phantomjs-2.0.0-windows && phantomjs sample.js


{$url}",$arr,$i),該語(yǔ)句表示通過(guò) phantomJS 執(zhí)行 sample. js 文件,傳入頁(yè)面的鏈接為 $url,返回的結(jié)果存入 $arr 中。 Sample.js 文件中的代碼如下:

自定規(guī)則的AJAX網(wǎng)頁(yè)信息采集功能的設(shè)計(jì)

根據(jù)該代碼可以提取圖 2 中的價(jià)格信息,將對(duì)應(yīng)的 URL 寫入上面 exec 的 $url 中,得到圖 3 所示的結(jié)果,由圖 3 可知, 價(jià)格 5 799 能夠被正確提取出來(lái)。提取結(jié)果如圖 4 所示。

自定規(guī)則的AJAX網(wǎng)頁(yè)信息采集功能的設(shè)計(jì)


結(jié) 語(yǔ)

本文提出了一種能夠自定規(guī)則提取 AJAX 網(wǎng)頁(yè)信息功能的設(shè)計(jì),通過(guò)測(cè)試能夠成功提取動(dòng)態(tài) AJAX 網(wǎng)頁(yè)信息,相較于傳統(tǒng)的網(wǎng)絡(luò)蜘蛛,自定規(guī)則設(shè)計(jì)可以更好更貼合用戶需求來(lái)對(duì)指定網(wǎng)站進(jìn)行信息提取,避免了虛假網(wǎng)站的干擾和重復(fù)信息的冗余。相較于傳統(tǒng)的dom 信息提取系統(tǒng),該信息提取功能加入了 PhantomJS 包,能夠提取傳統(tǒng)dom 無(wú)法提取的動(dòng)態(tài)信息,功能得到了加強(qiáng)。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉