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

?

基于云平臺的網(wǎng)頁抓取架構(gòu)的研究與設(shè)計(jì)

2018-10-25 11:06范順利周亦敏
計(jì)算機(jī)時代 2018年9期
關(guān)鍵詞:大數(shù)據(jù)

范順利 周亦敏

摘 要: 隨著網(wǎng)絡(luò)數(shù)據(jù)的迅速增長,網(wǎng)頁數(shù)據(jù)抓取在處理大量數(shù)據(jù)時遇到了一些挑戰(zhàn),例如大量數(shù)據(jù)存儲,需要密集計(jì)算能力以及數(shù)據(jù)提取的可靠性。提出了一個基于云平臺的網(wǎng)頁數(shù)據(jù)抓取架構(gòu),該架構(gòu)使用AWS(Amazon Web Services)作為云平臺,按需配置計(jì)算資源和數(shù)據(jù)存儲;Selenium作為網(wǎng)頁自動化工具,調(diào)用WebDriver API能夠模擬用戶使用瀏覽器。通過實(shí)驗(yàn),比較了該架構(gòu)與其他基于云的網(wǎng)頁抓取架構(gòu)的不同,并分析了它的優(yōu)勢。

關(guān)鍵詞: AWS; 網(wǎng)頁抓取; 大數(shù)據(jù); Selenium

中圖分類號:TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)09-21-04

Abstract: With the rapid growth of data on the Internet, web scraping encounters a number of challenges in processing large amounts of data, such as large amounts of data storage, the need for intensive computing capabilities, and the reliability of data extraction. So, a web scraping architecture based on the cloud platform is proposed. The architecture uses AWS (Amazon Web Services) as the cloud platform and configures computing resources and data storage on demand. Selenium is a web page automation tool; the supported WebDriver API simulates the process of users using the browser. Through experiments, the differences between this architecture and other cloud-based web scraping architectures are compared, and its advantages are analyzed.

Key words: AWS; Web scraping; big data; Selenium

0 引言

互聯(lián)網(wǎng)提供了大量數(shù)據(jù)集, 但是很多數(shù)據(jù)都被嵌入到網(wǎng)頁結(jié)構(gòu)與樣式中[1]。將可用的信息從網(wǎng)頁中提取出來,挖掘其潛在價值,使其在金融、數(shù)據(jù)分析以及其他科學(xué)領(lǐng)域發(fā)揮重要作用。目前現(xiàn)有的多數(shù)解決方案主要側(cè)重于網(wǎng)頁數(shù)據(jù)的采集,數(shù)據(jù)采集是與數(shù)據(jù)科學(xué)相關(guān)的任何研究和開發(fā)的初步工作,而這只是大數(shù)據(jù)的第一步。因此,對于數(shù)據(jù)科學(xué)領(lǐng)域,提取網(wǎng)頁數(shù)據(jù)并運(yùn)用到數(shù)據(jù)科學(xué)領(lǐng)域十分重要。

網(wǎng)絡(luò)上的大多數(shù)信息都是以HTML文檔的形式呈現(xiàn)的,這些數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù)[2]。由于非結(jié)構(gòu)化數(shù)據(jù)不遵循任何數(shù)據(jù)模型,因此信息提取并不容易。網(wǎng)頁數(shù)據(jù)提取的過程包括:網(wǎng)頁數(shù)據(jù)的解析、過濾、格式化結(jié)果和存儲。在分布式計(jì)算領(lǐng)域,處理大量的網(wǎng)頁抓取,可以使用BeautifulSoup,Requests和Scrapy[3]等各種庫,但是,它們只能在靜態(tài)頁面上工作。因此,選擇Selenium作為網(wǎng)頁自動化工具,Python的HTMLParser庫用于從HTML中提取數(shù)據(jù)[4]。使用Amazon Web Services的EC2(彈性計(jì)算云)作為云平臺,選擇EC2的原因在于其靈活性,可根據(jù)需要創(chuàng)建,啟動和終止EC2實(shí)例,以及對大數(shù)據(jù)應(yīng)用程序的支持。

1 簡介

隨著軟件產(chǎn)業(yè)的發(fā)展,網(wǎng)頁數(shù)據(jù)采集也經(jīng)歷了不同的發(fā)展階段,從最早期的人工復(fù)制整理數(shù)據(jù),到如今的基于云計(jì)算的大數(shù)據(jù)采集,每一次產(chǎn)業(yè)技術(shù)的革新都伴隨著硬件和軟件的巨大進(jìn)步和發(fā)展[5]。云計(jì)算通過高度密集的計(jì)算能力和支持彈性資源,使其成為個人企業(yè)以小資源開始自己的網(wǎng)頁抓取的最佳選擇。下面介紹一些基于云平臺的網(wǎng)頁抓取。

1.1 Import.io

Import.io是一個基于云平臺,在不編碼的情況下從不同網(wǎng)站抓取網(wǎng)頁,所有提取的數(shù)據(jù)都存儲在其云服務(wù)器上。它允許將數(shù)據(jù)下載為CSV,Excel,Google表格,JSON或通過API訪問。其獨(dú)特的功能包括自動數(shù)據(jù)和圖像提取,自動頁面鏈接、監(jiān)控、調(diào)度和無需編碼。

1.2 WebScraper.io

WebScraper.io是另一種可視化網(wǎng)頁抓取平臺,它提供Web Scraper和Web Scraper Extension的兩種方式。對于Google Chrome瀏覽器,Web Scraper Extension工具可以免費(fèi)使用,用戶可以創(chuàng)建一個sitemap,制定如何抓取。而對于基于云的Web Scraper,它的使用價格取決于要抓取的URL數(shù)量。

1.3 Scrapy

Scrapy是一個免費(fèi)的開放源代碼和協(xié)作式網(wǎng)頁抓取框架,通過編寫代碼并調(diào)用API提取網(wǎng)頁數(shù)據(jù)。Scrapy是用Python編寫的,可以部署在Scrapy云中,可以按需擴(kuò)展[6]。其特點(diǎn)是快速,簡單,可擴(kuò)展等。

以上解決方案主要側(cè)重于網(wǎng)頁數(shù)據(jù)的采集,而這只是大數(shù)據(jù)的第一步。鑒于大數(shù)據(jù)的進(jìn)一步處理,構(gòu)建了基于云的網(wǎng)頁抓取框架(Cloud-Scraper)。

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

2.1 Scraper介紹

圖1顯示了一個傳統(tǒng)的Scraper概況,客戶端向ScrapeHub提供URL以及網(wǎng)頁抓取配置。ScrapeHub程序啟動,處理和監(jiān)視系統(tǒng)中的所有任務(wù),它是用Python語言編寫的。然后ScrapeHub啟動Scrape Engine任務(wù),Scrape Engine初始化一個網(wǎng)頁,使用Selenium庫將網(wǎng)頁轉(zhuǎn)化到所需狀態(tài),使用Requests庫對其進(jìn)行解析。不同的Scraper可能使用不同的庫來解析和初始化網(wǎng)頁。在這里,只提到了Selenium和Requests,所有數(shù)據(jù)都存儲在數(shù)據(jù)庫中。這個模型代表了傳統(tǒng)的順序抓取網(wǎng)頁數(shù)據(jù)的方法,一次只能抓取一個站點(diǎn),只能在給定的時間段內(nèi)提取有限的數(shù)據(jù)。通過添加更多的計(jì)算和存儲資源,可以消除這種限制,但隨著需求的增長,維護(hù)將變得非常昂貴和困難,所以這個方法不是很靈活適用。

2.2 Cloud-Scraper設(shè)計(jì)

使用Amazon彈性計(jì)算云(EC2),通過簡單隊(duì)列服務(wù)(SQS)和簡單存儲服務(wù)(S3)[7],可以解決上述問題。Amazon S3用于存儲Amazon機(jī)器映像,能夠根據(jù)需要創(chuàng)建盡可能多的EC2實(shí)例,具有經(jīng)濟(jì)高效的靈活性。圖2說明了Cloud-Scraper的架構(gòu),該體系結(jié)構(gòu)的前端是Web瀏覽器,通過REST API連接到Amazon Web Server。位于云端的ScrapeHub將處理所有客戶端的抓取請求以及處理和監(jiān)控事件,使用Amazon SQS來維護(hù)要被抓取的URL列表。Amazon SQS處理兩個隊(duì)列;一個是請求隊(duì)列,另一個是響應(yīng)隊(duì)列。Scrape Engine是一個以URL作為輸入并抓取網(wǎng)頁內(nèi)容的程序,每個EC2實(shí)例都是運(yùn)行Scrape Engine的虛擬機(jī)。DynamoDB是一款免費(fèi)且開放源碼的NoSQL數(shù)據(jù)庫,可為提取的數(shù)據(jù)提供存儲[8]。

圖3顯示了Cloud-Scraper的網(wǎng)頁抓取流程,當(dāng)用戶對Cloud-Scraper發(fā)送抓取請求時,請求會轉(zhuǎn)到ScrapeHub,該請求包含兩個信息:URL和抓取配置。首先,ScrapeHub將URL劃分為多個塊,并將它們轉(zhuǎn)發(fā)到S3存儲,同時創(chuàng)建多個EC2實(shí)例,以及創(chuàng)建SQS請求隊(duì)列和響應(yīng)隊(duì)列。ScrapeHub在SQS請求隊(duì)列的幫助下向EC2實(shí)例發(fā)送服務(wù)請求,處理請求的順序以先進(jìn)先出(FIFO)調(diào)度方式完成。ScrapeHub創(chuàng)建的請求隊(duì)列上的每個請求都有一個特定的ID,通過響應(yīng)隊(duì)列持續(xù)監(jiān)視整體抓取的進(jìn)度,抓取結(jié)果存儲在DynamoDB中。

Amazon EMR(Amazon Elastic MapReduce)是一種Web服務(wù)[9],使用Hadoop處理方法,并結(jié)合Amazon EC2,能夠以高效率輕松處理大量數(shù)據(jù)。Cloud-Scraper集成了大數(shù)據(jù)應(yīng)用程序,抓取的網(wǎng)頁數(shù)據(jù)能夠可視化分析。

3 實(shí)驗(yàn)分析

圖4顯示了使用不同方案完成網(wǎng)頁抓取所需的時間,包括請求時間,排隊(duì)時間,處理時間和來自云端的響應(yīng)時間,X軸表示URL的數(shù)量,而Y軸表示網(wǎng)頁抓取完成的時間。圖中上面的兩條線表示使用單個機(jī)器和使用單個機(jī)器上的多個線程的抓取完成時間,下面的兩條線表示使用20臺機(jī)器和使用20臺機(jī)器Amazon EC2的T2實(shí)例完成抓取所需的時間??梢钥吹?,使用單節(jié)點(diǎn)本地機(jī)器,最多可以抓取4000個網(wǎng)頁數(shù)據(jù),這是由于服務(wù)器限制單個IP在有限的時間內(nèi)訪問有限的數(shù)據(jù)而導(dǎo)致的。在單個機(jī)器中執(zhí)行并發(fā)線程也是一樣,盡管計(jì)算速度比順序節(jié)點(diǎn)快得多,但抓取效率隨著URL的增加而下降。下面的兩條線的抓取完成時間大致是線性的,表明隨著URL數(shù)量逐漸增加,Cloud-Scraper能夠正常運(yùn)行??梢酝茢喑?,Cloud-Scraper架構(gòu)是可擴(kuò)展的,并且可依據(jù)抓取的URL數(shù)量增加EC2實(shí)例。

許多基于云的網(wǎng)頁抓取解決方案都是可用的,但其中大部分都是商業(yè)的,其工作模式不是公開的。因此,與一些現(xiàn)有的開源框架進(jìn)行比較,如Scrapy和Import.io。圖5顯示了使用一臺機(jī)器實(shí)例,Cloud-Scraper完成網(wǎng)頁抓取時間與其他基于云平臺的對比。與其他框架相比,Cloud-Scraper架構(gòu)是分布式的,對可以使用的計(jì)算資源的實(shí)例沒有限制,在Amazon云中的DynamoDB的幫助下,可以靈活地使用所有資源。由于Selenium的使用可能會延遲一段時間,抓取完成時間比Import.io的抓取完成時間多,但它的缺點(diǎn)已被優(yōu)勢所超越, Selenium提供了更高的可靠性,以及對人類行為的模仿效果更好[10]。在數(shù)據(jù)提取方面,其性能與目前市場上的其他基于云的網(wǎng)頁抓取架構(gòu)相當(dāng),還可以與其他大數(shù)據(jù)應(yīng)用結(jié)合使用,最終被抓取的數(shù)據(jù)將進(jìn)入大數(shù)據(jù)處理。

4 Cloud-Scraper的優(yōu)勢

Cloud-Scraper有很多優(yōu)點(diǎn)。其中一些描述如下:

⑴ 成本效益:使用云資源按次付費(fèi)模式,能夠以便宜的價格使用云資源,可以按需擴(kuò)展或縮減,比維護(hù)自己的云更便宜[11]。云供應(yīng)商幾乎可以提供從存儲到處理能力所需的一切,使得云計(jì)算更簡單。購買自有資源,維護(hù)和擴(kuò)大需求的費(fèi)用會很高。

⑵ 可擴(kuò)展性:云供應(yīng)商根據(jù)需要提供可靠的計(jì)算機(jī),可以根據(jù)需要創(chuàng)建和使用這些機(jī)器的多個實(shí)例。供應(yīng)商提供大量選擇平臺的選項(xiàng),根據(jù)對計(jì)算的性能需求,可以選擇正確的處理能力[12]。

⑶ 大數(shù)據(jù)應(yīng)用的集成:任何大數(shù)據(jù)應(yīng)用都需要四個基礎(chǔ)架構(gòu)——存儲,處理,分析軟件和網(wǎng)絡(luò)。DynamoDB是NoSQL數(shù)據(jù)庫,可提供更高的可用性,從而獲得更好的性能。分析軟件可以根據(jù)用戶的需求在此架構(gòu)上編程,借助Amazon的EC2,可以在數(shù)量和計(jì)算能力上擴(kuò)展。盡管這種架構(gòu)并未完成所有大數(shù)據(jù)需求,但進(jìn)一步的程序集成和修改可以使其對于大數(shù)據(jù)任務(wù)更加穩(wěn)健。

5 結(jié)論

本文提出一種新的基于云平臺的網(wǎng)頁抓取架構(gòu),Amazon的云服務(wù)為分布式環(huán)境中的計(jì)算和存儲提供彈性資源,為網(wǎng)頁抓取提供了更好的平臺。通過實(shí)驗(yàn)測試了該架構(gòu)的可擴(kuò)展性,并簡單地將它與其他網(wǎng)頁抓取架構(gòu)進(jìn)行了比較,分析其優(yōu)點(diǎn),包括Selenium的使用和對大數(shù)據(jù)應(yīng)用程序的集成。此外,也可以使用其他云服務(wù)來實(shí)現(xiàn)上述架構(gòu)。

參考文獻(xiàn)(References):

[1] 魏冬梅,何忠秀,唐建梅.基于Python的Web信息獲取方法研究[J].軟件導(dǎo)刊,2018.17(1):41-43

[2] 郎波,張博宇.面向大數(shù)據(jù)的非結(jié)構(gòu)化數(shù)據(jù)管理平臺關(guān)鍵技術(shù)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2013.10:53-56

[3] 劉宇,鄭成煥.基于Scrapy的深層網(wǎng)絡(luò)爬蟲研究[J].軟件,2017.38(7):111-114

[4] 齊鵬,李隱峰,宋玉偉.基于Python的Web數(shù)據(jù)采集技術(shù)[J].電子科技,2012.25(11):118-120

[5] Keven.網(wǎng)頁數(shù)據(jù)采集的發(fā)展歷史以及未來前景[EB/OL].http://www.bazhuayu.com/blog/wysjcjfzls.

[6] 劉碩.精通Scrapy網(wǎng)絡(luò)爬蟲[M].清華大學(xué)出版社,2017.

[7] 徐鴻飛.云計(jì)算安全問題初探——基于Amazon Dynamo與EC2的架構(gòu)分析[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013.16(17):21-22

[8] 孫寶華.基于Dynamo的存儲機(jī)制研究[D].西安電子科技大學(xué),2013.

[9] 滕曉龍.如何為Hadoop選擇最佳彈性MapReduce框架[EB/OL].https://searchcloudcomputing.techtarget.com.cn/5-10795

[10] 杜彬.基于Selenium的定向網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)[J].金融科技時代,2016.7:35-39

[11] Jackson K R, Muriki K, Thomas R C, et al. Performance and cost analysis of the supernova factory on the amazon AWS cloud[J]. Scientific Programming,2011.19:2-3

[12] Juan J D, Prodan R. Multi-objective workflow scheduling in amazon EC2[J]. Cluster Computing,2014.17(2):169-189

猜你喜歡
大數(shù)據(jù)
基于在線教育的大數(shù)據(jù)研究
“互聯(lián)網(wǎng)+”農(nóng)產(chǎn)品物流業(yè)的大數(shù)據(jù)策略研究
基于大數(shù)據(jù)的小微電商授信評估研究
大數(shù)據(jù)時代新聞的新變化探究
淺談大數(shù)據(jù)在出版業(yè)的應(yīng)用
“互聯(lián)網(wǎng)+”對傳統(tǒng)圖書出版的影響和推動作用
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究