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

?

基于Scrapy和Hadoop平臺的房屋價格數(shù)據(jù)爬取和存儲系統(tǒng)

2019-10-09 05:48丁志毅
電子技術(shù)與軟件工程 2019年17期
關(guān)鍵詞:爬蟲海量開源

文/丁志毅

隨著大數(shù)據(jù)、云計算、人工智能等新興計算機技術(shù)的急速發(fā)展,所產(chǎn)生的數(shù)據(jù)呈爆炸性增長,如何實現(xiàn)存儲和計算能力的分布式處理,擺脫目前傳統(tǒng)的計算技術(shù)和信息系統(tǒng)的處理方式,是目前數(shù)據(jù)分析領(lǐng)域亟待解決的問題。Hadoop 是使用 Java 語言開發(fā)的分布式計算存儲系統(tǒng),是一個由Apache基金會支持的開源項目,提供可靠的,可擴展的分布式系統(tǒng)基礎(chǔ)架構(gòu),能夠跨計算機集群分布式存儲海量數(shù)據(jù),允許使用簡單的編程模型分布式處理數(shù)據(jù)。用戶可以像操作本地文件系統(tǒng)一樣透明的訪問HDFS,常應(yīng)用于海量數(shù)據(jù)的場景。

1 爬蟲系統(tǒng)的設(shè)計與實現(xiàn)

1.1 爬蟲基本原理

網(wǎng)絡(luò)爬蟲的主要作用是依據(jù)一定的爬行策略自動的從網(wǎng)上下載網(wǎng)頁鏡像到本地,并能夠抓取所有其能夠訪問到的網(wǎng)頁以獲取海量信息,解析其中的數(shù)據(jù)進行分析挖掘等。其基本工作原理如下:首先初始化一個URL作為爬行的開始位置,如果該 URL沒有被抓取過,解析其DNS信息,嘗試與這些 URL鏈接所在的服務(wù)器建立連接,自動提取頁面上的信息保存至本地,同時提取新的 URL,根據(jù)一定的遍歷算法將其去重過濾后加入待爬取隊列,重復(fù)以上步驟遍歷所有的網(wǎng)頁數(shù)據(jù),直到待爬取的隊列中沒有可用的 URL,滿足停止的條件時結(jié)束爬取。

1.2 爬取模塊

圖1:Scrapy爬蟲的流程

圖2:HDFS系統(tǒng)結(jié)構(gòu)

Scrapy是一款開源的網(wǎng)絡(luò)爬蟲框架,是使用python 語言開發(fā)并封裝的一個強大的自動數(shù)據(jù)采集框架,目的為了爬取網(wǎng)站內(nèi)容,提取結(jié)構(gòu)性數(shù)據(jù)。無需再從零開始去設(shè)計爬蟲框架,而是可以簡單、高效的搭建python 的 Scrapy 框架,通過 Scrapy 框架提供的功能進行定向的數(shù)據(jù)爬取工作。在 Scrapy 項目中,可以方便地自定義爬蟲的爬取規(guī)則,即可快速獲得所需要的網(wǎng)頁數(shù)據(jù),同時一些固定的前置后續(xù)處理可由一些穩(wěn)定的開源庫幫助解決,并可根據(jù)需要將關(guān)鍵數(shù)據(jù)保存為特定的數(shù)據(jù)格式。Scrapy 爬蟲的流程如圖1所示。

Scrapy 強大的功能得益于他的構(gòu)架,他總共有 8 個部分組成:

1.2.1 Scrapy Engine 組件

爬蟲框架的引擎組件,是整個框架的“大腦“,負責所有組件的數(shù)據(jù)流動。

1.2.2 Scheduler 組件

調(diào)度器組件,負責接收并創(chuàng)建請求隊列。

1.2.3 Downloader 組件

下載器組件,負責下載網(wǎng)頁數(shù)據(jù)。

1.2.4 spiders 組件

爬蟲模塊,其功能在于從特定的網(wǎng)頁結(jié)構(gòu)數(shù)據(jù)中獲取指定信息,在 Scrapy 中被定義為實體(Item)。

1.2.5 Pipeline 組件

負責對數(shù)據(jù)進行清理、驗證以及持久化(轉(zhuǎn)存數(shù)據(jù)庫)的處理。

1.2.6 Downloader middlewares

其在引擎和下載器組件之間,功能是負責引擎發(fā)出的請求,以協(xié)調(diào)下載組件工作。

1.2.7 spider middlewares

負責處理爬蟲數(shù)據(jù)的輸入和輸出,主要是為了提高爬蟲質(zhì)量,可以同時使用不同功能的下載中間件。

2 HDFS存儲模塊

HDFS 采用典型的主從式(master-slave)設(shè)計,在該設(shè)計中主要包含兩種節(jié)點:主節(jié)點(NameNode)和數(shù)據(jù)節(jié)點(DataNode)。主節(jié)點負責管理整個文件系統(tǒng)的命名空間;另外一種 DataNode是從節(jié)點,為數(shù)據(jù)提供真實的存儲、管理服務(wù)。DataNode 最基本的存儲單位是 Block,文件大于 Block 時會被劃分為多個 Block 存儲在不同的數(shù)據(jù)節(jié)點,其元數(shù)據(jù)存儲在NameNode中,全局調(diào)度數(shù)據(jù)塊的讀寫操作,主要用于定位block與DadaNode之間的對應(yīng)關(guān)系。用戶如果操作 HDFS 文件時,需要先訪問 NameNode 節(jié)點,讀取元數(shù)據(jù)(metaData)信息,得到存儲位置后再訪問 DateNode 。其架構(gòu)如圖2所示。

經(jīng)Scrapy采集到的數(shù)據(jù)需要持久化到hdfs中,python語言來訪問Hadoop HDFS時,需要引入pyhdfs庫,通過pyhdfs提供的API接口實現(xiàn)對hdfs的操作。HdfsClient這個類可以連接HDFS的NameNode,用來讀、些、查詢HDFS上的文件。代碼示例:

Client=pyhdfs.HdfsClient(hosts="192.168.1.108,9000",user_name="hadoop")

從本地上傳文件至集群

client.copy_from_local("D:/test.csv","/user/hadoop/test.csv")

打開一個遠程節(jié)點上的文件,返回一個HttpResponse對象

HttpResponse response = client.open("/user/hadoop/test.csv")

3 結(jié)語

在房地產(chǎn)市場領(lǐng)域,浩瀚的網(wǎng)絡(luò)資源已經(jīng)呈現(xiàn)出大數(shù)據(jù)的特點,傳統(tǒng)的信息處理技術(shù)已經(jīng)無法適應(yīng)需求。針對無法進行有效數(shù)據(jù)分析的現(xiàn)狀,本文研究利用Scrapy網(wǎng)絡(luò)爬蟲框架和HDFS 分布式文件系統(tǒng)進行數(shù)據(jù)的采集和存儲。HDFS 能為不斷增長的數(shù)據(jù)提供高度的容錯、高吞吐量和分布式儲存服務(wù)。通過提升大數(shù)據(jù)分析技術(shù)在房地產(chǎn)行業(yè)中的應(yīng)用水平,充分利用 Hadoop 平臺的優(yōu)勢,轉(zhuǎn)變數(shù)據(jù)存儲方式和計算模式,加強數(shù)據(jù)的分析和挖掘,提高政府及有關(guān)部門對房地產(chǎn)市場分析的廣度和深度,更好的為政府決策、行業(yè)管理提供決策依據(jù)是下一步的主要研究工作。

猜你喜歡
爬蟲海量開源
利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
五毛錢能買多少頭牛
海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
大家說:開源、人工智能及創(chuàng)新
開源中國開源世界高峰論壇圓桌會議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
開源計算機輔助翻譯工具研究