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

        ?

        基于Scrapy的分布式爬蟲系統(tǒng)的設(shè)計與實現(xiàn)

        2017-09-12 02:01:42李代祎謝麗艷錢慎一吳懷廣
        關(guān)鍵詞:爬蟲隊列網(wǎng)頁

        李代祎,謝麗艷,錢慎一,吳懷廣*

        (1.鄭州輕工業(yè)學院 計算機與通信工程學院,河南 鄭州 450002; 2.河南省工商行政管理學校,河南 鄭州 450002)

        基于Scrapy的分布式爬蟲系統(tǒng)的設(shè)計與實現(xiàn)

        李代祎1,謝麗艷2,錢慎一1,吳懷廣1*

        (1.鄭州輕工業(yè)學院 計算機與通信工程學院,河南 鄭州 450002; 2.河南省工商行政管理學校,河南 鄭州 450002)

        隨著互聯(lián)網(wǎng)的快速發(fā)展,其信息量和相關(guān)服務(wù)也隨之快速增長.如何從海量的信息中快速、準確地抓取所需要的信息變得越來越重要,因此負責互聯(lián)網(wǎng)信息收集工作的網(wǎng)絡(luò)爬蟲將面臨著巨大的機遇和挑戰(zhàn).目前國內(nèi)外一些大型搜索引擎只給用戶提供不可制定的搜索服務(wù),而單機的網(wǎng)絡(luò)爬蟲又難當重任,因此可定制性強、信息采集速度快和規(guī)模大的分布式網(wǎng)絡(luò)爬蟲便應(yīng)運而生.通過對原有Scrapy框架的學習和研究,將Scrapy和Redis結(jié)合改進原有的爬蟲框架,設(shè)計并實現(xiàn)了一個基于Scrapy框架下的分布式網(wǎng)絡(luò)爬蟲系統(tǒng),然后將從安居客、58同城、搜房等網(wǎng)站抓取的二手房信息存入MongoDB中,便于對數(shù)據(jù)進行進一步的處理和分析.結(jié)果表明基于Scrapy框架下的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)同單機網(wǎng)絡(luò)爬蟲系統(tǒng)相比效率更高且更穩(wěn)定.

        Scrapy;分布式;Scrapy-Reids;網(wǎng)絡(luò)爬蟲;MongoDB;數(shù)據(jù)存儲

        互聯(lián)網(wǎng)中的信息量隨著互聯(lián)網(wǎng)的迅速發(fā)展而越來越多,在2008年Google公司宣布他們檢索到的網(wǎng)頁已經(jīng)超過了1萬億,然而其檢索到的網(wǎng)頁僅僅是互聯(lián)網(wǎng)上的一部分而已[1],如何從大量的信息中挖掘出有用的信息就成了當今的熱門問題,搜索引擎也正是在這種需求下而誕生的技術(shù).搜索引擎是通過網(wǎng)絡(luò)爬蟲從互聯(lián)網(wǎng)中挖掘大量需求信息,然后網(wǎng)絡(luò)爬蟲將這些信息存儲在數(shù)據(jù)庫中,以便將來根據(jù)用戶需求對其進行處理,它用到人工智能、信息檢索、計算機網(wǎng)絡(luò)、數(shù)據(jù)庫、分布式處理、數(shù)據(jù)挖掘、機器學習和自然語言處理等多領(lǐng)域的理論技術(shù),具有很強的綜合性和挑戰(zhàn)性[2-3].

        目前國內(nèi)外在網(wǎng)絡(luò)爬蟲領(lǐng)域已經(jīng)有了很多研究,例如,爬行策略、海量數(shù)據(jù)存儲、海量數(shù)據(jù)索引、網(wǎng)頁評級等.但是較為成熟的大型網(wǎng)絡(luò)爬蟲只能為用戶提供不可定制的搜索服務(wù),且很多網(wǎng)絡(luò)爬蟲的技術(shù)都被列為商業(yè)機密,不對外開放.在開源爬蟲方面,例如,Larbin、Nutch、heritrix等已經(jīng)是比較成熟的網(wǎng)絡(luò)爬蟲項目,但是它們大多為單一網(wǎng)絡(luò)爬蟲,并且存在著性能不穩(wěn)定、用戶親和性較低、對中文支持不足和配置復雜等問題[4-5].因此,部署方便、可定制性高的中小規(guī)模分布式網(wǎng)絡(luò)爬蟲取代傳統(tǒng)的網(wǎng)絡(luò)爬蟲勢不可擋.

        1 分布式網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)

        1.1 網(wǎng)絡(luò)爬蟲

        網(wǎng)絡(luò)爬蟲(Web Crawler)是一種按照一定規(guī)則在互聯(lián)網(wǎng)上自動獲取處理網(wǎng)頁的計算機程序,其廣泛地應(yīng)用于互聯(lián)網(wǎng)搜索引擎或網(wǎng)頁緩存管理中[6].簡單來講,URL資源存放在一個隊列中,此隊列負責URL資源的優(yōu)先級管理.首先網(wǎng)絡(luò)爬蟲從隊列中獲取一個 URL資源 并下載此網(wǎng)頁,然后提取該網(wǎng)頁中的其它URL 資源并放入隊列中.重復上述過程,直到爬蟲將其關(guān)閉[7-8].通用的網(wǎng)絡(luò)爬蟲結(jié)構(gòu)如圖1所示.

        圖1 通用的網(wǎng)絡(luò)爬蟲結(jié)構(gòu)Fig.1 General web crawler architecture

        網(wǎng)絡(luò)爬蟲通過不同爬行策略遞歸的訪問頁面、保存頁面,最終獲取所需信息.目前網(wǎng)絡(luò)爬蟲遵守以下4種爬行策略規(guī)則[9]:

        1)選擇爬行規(guī)則:使用廣度優(yōu)先的爬行策略.一個網(wǎng)絡(luò)爬蟲的目的是抓取互聯(lián)網(wǎng)中最相關(guān)的網(wǎng)頁,而不是隨機的獲取互聯(lián)網(wǎng)的某些樣本網(wǎng)頁.

        2)回訪規(guī)則:互聯(lián)網(wǎng)是動態(tài)的,互聯(lián)網(wǎng)中網(wǎng)頁的建立、修改和刪除等活動在不斷進行.然而一個爬蟲活動可能持續(xù)和長時間,所以爬蟲要制定回訪規(guī)則來訪問更新的網(wǎng)頁.

        3)禮貌規(guī)則:如果網(wǎng)絡(luò)爬蟲不斷抓取同一臺服務(wù)器上的網(wǎng)頁,當請求過多時會造成服務(wù)器癱瘓.因此網(wǎng)絡(luò)爬蟲在正常運行的同時也要兼顧服務(wù)器的正常運行.

        4)并行規(guī)則:網(wǎng)絡(luò)爬蟲可以通過多線程并發(fā)地運行多個爬行進程,通過這樣可以極大的降低開銷和提高下載效率.

        1.2 Scrapy-Redis

        Scrapy-Redis[10]是基于Redis的Scrapy分布式組件,其將任務(wù)和數(shù)據(jù)信息的存取放到redis queue中,使多臺服務(wù)器可以同時執(zhí)行crawl和items process,從而大大提高了數(shù)據(jù)爬取和處理的效率.其功能為:①多個爬蟲共享一個redis queue 隊列,適合大范圍、多域名的爬蟲集群.②爬取的items存放到items redis queue隊列,可以開啟多個items process來處理爬取的數(shù)據(jù).Scrapy-Redis各個組件之間的關(guān)系如圖2所示.

        圖2 Scrapy框架圖Fig.2 Scrapy frame diagram

        1.3 數(shù)據(jù)存儲NoSQL

        由于網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)大多為半結(jié)構(gòu)化或非結(jié)構(gòu)化的數(shù)據(jù),并且傳統(tǒng)的關(guān)系型數(shù)據(jù)庫并不擅長存儲和處理此類數(shù)據(jù).因此選擇非關(guān)系型數(shù)據(jù)庫 NoSQL 存儲爬取到的數(shù)據(jù).

        NoSQL 數(shù)據(jù)庫大致分為4類[11]:

        1)鍵值(Key-Value)存儲數(shù)據(jù)庫:Key-Value模型對于IT系統(tǒng)來說的優(yōu)勢在于簡單、易部署.例如:Tokyo Cabinet/Tyrant,Redis,Voldemort,Oracle BDB.

        2)列存儲數(shù)據(jù)庫:此類數(shù)據(jù)庫通常是針對海量的數(shù)據(jù)實施分布式存儲.鍵仍然存在且指向了多個列.如:Cassandra,HBase,Riak.

        3)文檔型數(shù)據(jù)庫:此類型的數(shù)據(jù)模型使版本化和半結(jié)構(gòu)化的文檔以特定的格式存儲,例如,JSON.文檔型數(shù)據(jù)庫的查詢效率比較高,如:CouchDB,MongoDb,SequoiaDB.

        4)圖形(Graph)數(shù)據(jù)庫:圖形結(jié)構(gòu)的數(shù)據(jù)庫是使用靈活的圖形模型,并且該模型能夠擴展到多個服務(wù)器上.如:Neo4J,InfoGrid,Infinite Graph.

        2 分布式網(wǎng)絡(luò)爬蟲的研究與設(shè)計

        2.1 Scrapy框架研究

        2.1.1 Scrapy框架 如圖2所示,Scrapy 框架的模塊組成有[12-14]:

        1)Scrapy引擎(Scrapy Engine):負責調(diào)控數(shù)據(jù)在系統(tǒng)中各個模塊間傳遞,以及調(diào)用相應(yīng)的函數(shù)響應(yīng)特定的事件.

        2)調(diào)度器模塊(Scheduler):負責對所有待爬取的 URL資源進行統(tǒng)一管理.例如,將接收 Scrapy 引擎提交的URL資源插入到請求隊列中;將URL從隊列中取出并發(fā)送給Scrapy引擎以響應(yīng)Scrapy引擎發(fā)出的URL 請求.

        3)下載器中間件模塊(Downloader Middlewares):負責傳遞Scrapy引擎發(fā)送給下載器模塊的URL請求和下載器模塊發(fā)送給 Scrapy 引擎的HTTP 響應(yīng).

        a)下載器模塊(Downloader):負責下載Web 頁面上的數(shù)據(jù),并最終通過Scrapy 引擎將其發(fā)送給爬蟲模塊.

        b)爬蟲模塊(Spider):分析從下載器模塊獲取到的數(shù)據(jù),然后提取出Item 或得到相關(guān)的URL資源.

        c)爬蟲中間件模塊(Spider Middlewares):負責處理爬蟲模塊的輸入和輸出.

        d)數(shù)據(jù)流水線模塊(Item Pipeline):通過數(shù)據(jù)清理、數(shù)據(jù)驗證、數(shù)據(jù)持久化等操作來處理由爬蟲模塊提取和發(fā)送過來的Item.

        2.1.2 Scrapy框架擴展 Scrapy框架簡單、高效,且被廣泛應(yīng)用于數(shù)據(jù)的挖掘、監(jiān)測和自動測試.但是Scrapy框架也存在不足,例如,Scrapy框架下的爬蟲不支持分布式、單線程執(zhí)行、內(nèi)存消耗過大等.因此深入理解Scrapy框架的擴展機制,通過編程來替換或增加框架中的一些模塊來彌補其不足是十分必要的.本文對Scrapy框架做了如下補充:

        1)本文利用Scrapy-Redis通過redis對爬取的請求進行存儲和調(diào)度,并對爬取產(chǎn)生的項目(items)存儲以供后續(xù)處理使用.Scrapy-Redis的組件如下[15-16].

        a)Connection.py:對settings進行配置,實現(xiàn)通過Python訪問redis數(shù)據(jù)庫,被dupefilter和scheduler調(diào)用,涉及到redis存取的都要使用到這個模塊.

        b)dupefilter.py:使用redis的set數(shù)據(jù)結(jié)構(gòu)對reqeust進行去重處理.

        c)queue.py:將request存入到queue中,調(diào)度時再將其彈出.目前隊列的調(diào)度有三種方式:FIFO(先入先出)的SpaiderQueue,SpiderPriorityQueue和LIFO(后入先出)的SpiderStack.本文用的是第二種方式.

        d)pipelines.py:將Item存儲在redis中以實現(xiàn)分布式處理.

        圖3 Scrapy-Redis組件之間的關(guān)系Fig.3 Relationship between Scrapy-Redis components

        e)scheduler.py:重寫scrapy中的調(diào)度模塊,實現(xiàn)crawler的分布式調(diào)度.

        f)spider.py:重寫scrapy中的爬蟲模塊,從redis數(shù)據(jù)庫的隊列中讀取要爬取的url,然后執(zhí)行爬取.若爬取過程中有其它的url返回,繼續(xù)執(zhí)行爬蟲直到所有的request完成后,再從隊列中讀取url,循環(huán)上述過程.

        通過分析可得,Scrapy-Redis各個組件之間的關(guān)系如圖3所示.

        2)單機硬盤與內(nèi)存容量有限、數(shù)據(jù)的頻繁查詢是造成了CPU性能的嚴重下降的主要原因,因此數(shù)據(jù)庫的選擇顯的尤為重要.由于網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)大多數(shù)為非結(jié)構(gòu)化的數(shù)據(jù),因此本文選取擅長存取非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫MongoDB[17-18].經(jīng)過擴展后的Scrapy框架如圖4所示.

        2.2 反爬蟲技術(shù)應(yīng)對策略

        目前很多網(wǎng)站禁止爬蟲爬取數(shù)據(jù),網(wǎng)站通過用戶請求的Headers、用戶行為、網(wǎng)站目錄和數(shù)據(jù)加載等方式來進行反爬蟲,從而增大爬取的難度.本爬蟲主要采取了以下應(yīng)對策略:

        1)設(shè)置download_delay參數(shù). 如果下載等待時間過長,則短時間大規(guī)模抓取數(shù)據(jù)的任務(wù)將不能完成,而太短則會增加被禁止爬取數(shù)據(jù)的概率.因此在settings.py中設(shè)置:DOWNLOAD_DELAY = 2.

        圖4 擴展后的Scrapy框架Fig.4 The extended Scrapy framework

        2)禁用cookies,可以防止爬蟲行為被使用cookies識別爬蟲軌跡的網(wǎng)站所察覺,因此需要在settings.py 中設(shè)置:

        COOKIES_ENABLES=False.

        3)偽裝user agent,防止被服務(wù)器識別,將user agent 寫入rotate_useragent.py文件里形成user-agent池,在發(fā)送請求時會從user-agent池中隨機選取一個使用.因此需要在settings.py中設(shè)置:

        DOWNLOADER_MIDDLEWARES={′scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware′ :None,′

        HouseInfoSpider.spiders.rotate_useragent.RotateUserAgentMiddleware′ :400,}

        2.3 數(shù)據(jù)爬取與存儲

        2.3.1 網(wǎng)頁結(jié)構(gòu)和數(shù)據(jù)分析 通過對網(wǎng)頁HTML結(jié)構(gòu)進行分析,從而完成爬蟲模塊的編寫.本爬蟲的URL隊列中有3種類型的URL,以安居客的網(wǎng)頁結(jié)構(gòu)為例進行分析.該網(wǎng)頁中所包含數(shù)據(jù)的節(jié)點是class=”houselist-mod”的

          節(jié)點,該節(jié)點下的
        • 節(jié)點有50個,每個
        • 節(jié)點中包含有需要提取的目標數(shù)據(jù),即index類型的URL.Scrapy提取數(shù)據(jù)使用特定的 XPath 表達式來提取 HTML 網(wǎng)頁中的數(shù)據(jù),偽代碼如下所示:

          def parse_detail(self,response):

          item = HouseInfoItem()

          selector = scrapy.Selector(response)

          item[′url′] = response.url

          item[′village_title′]= #標題

          list_first_item(selector.xpath(′//h3[@class ="long-title"][1]/text()′).extract()).strip() }

          (……)

          item[′village_describe′]= #描述

          list_first_item(selector.xpath(′//div[@class="houseInfoV2-item-descjs-house-explain"]/text()′).extract()).replace(" ","").replace(" ","").replace("","").strip()

          yield item

          從網(wǎng)站上獲得數(shù)據(jù)followers、fullname等在Item中統(tǒng)一建模.相應(yīng)代碼在items.py中:

          import scrapy

          class HouseInfoItem(scrapy.Item):

          url=scrapy.Field() #當前網(wǎng)頁的url

          village_name=scrapy.Field() #小區(qū)名

          village_location=scrapy.Field() #位置

          village_area=scrapy.Field() #面積

          (……)

          2.3.2 數(shù)據(jù)庫連接和參數(shù)設(shè)置 在settings.py文件中設(shè)置MongoDB的相應(yīng)參數(shù):服務(wù)器、端口號、數(shù)據(jù)庫,然后在指定的位置添加數(shù)據(jù)庫設(shè)置:

          #MongoDB

          MONGO_URI=′mongodb://127.0.0.1:27017′

          MONGO_DATABASE = ′HouseInfo′

          #改變默認PIPELNES

          ITEM_PIPELINES={′HouseInfoSpider.pipelines.MongoPipeline′:300,′scrapy_redis.pipelines.RedisPipeline′:400,}

          在pipelines.py文件中定義一個函數(shù)連接數(shù)據(jù)庫:

          #數(shù)據(jù)庫初始化

          Class MongoDBPipeline(object):

          hp_collection_name = ′house_info′

          def_inir_(sef,mongo_uri,mongo_db)

          (……)

          #數(shù)據(jù)庫連接

          def open_spider(self,spider):

          self.client=pymongo.MongoClient

          (self.mongo_uri)

          self.db = self.client[self.mongo_db]

          #將數(shù)據(jù)存入到數(shù)據(jù)庫中

          def process_item(self,item,spider):

          if isinstance(item,HouseInfoItem):

          key_index = item[′url′]

          if not self.db[self.hp_collection_name] .find({′url′:key_index}).count():

          self.db[self.hp_collection_name].insert(dict(item))

          return item

          3 實驗結(jié)果分析

          3.1 實驗結(jié)果

          Ipush.py文件中將要爬取的原始網(wǎng)站url存入redis數(shù)據(jù)庫的隊列中,然后通過scrapy crawlall命令執(zhí)行爬蟲,最后將爬取的數(shù)據(jù)存入MongoDB中.爬取結(jié)果顯示如圖5所示.

          圖5 MongoDB中的數(shù)據(jù)Fig.5 Data in MongoDB

          3.2 結(jié)果分析

          整個系統(tǒng)的部署:1臺安裝有redis和MongoDB數(shù)據(jù)庫的服務(wù)器作為爬蟲的主節(jié)點;1臺安裝有MongoDB數(shù)據(jù)庫的服務(wù)器作為爬蟲從節(jié)點;1臺安裝有MongoDB數(shù)據(jù)庫的單獨服務(wù)器.硬件配置如表1所示.

          表1 硬件配置

          實驗測試中,為了防止爬蟲行為被禁止,將最高爬取頻率設(shè)置為2秒/網(wǎng)頁,系統(tǒng)運行5個小時(單機爬取和分布式爬取選在同一時段),其爬取結(jié)果如表2所示.

          通過分析表2中的數(shù)據(jù)可知,每個節(jié)點每小時爬取的網(wǎng)頁數(shù)量在1 700左右.為了防止爬蟲被禁止,爬蟲的最高頻率設(shè)置為2秒/網(wǎng)頁.由于受網(wǎng)絡(luò)延遲、I/O延遲等的限制,每小時爬取的網(wǎng)頁數(shù)量略低于理論上最高值1 800(60*60/2=1 800).另外,2個爬蟲節(jié)點每小時爬取url的數(shù)量幾乎接近1∶1,這也證明了系統(tǒng)中各個爬蟲節(jié)點的負載均衡.同時運行結(jié)果也表明,經(jīng)過擴展的Scrapy框架使得爬取速度大大提高了.

          表2 爬取結(jié)果

          根據(jù)表2中數(shù)據(jù),利用Matlab可得到圖6的線形圖.

          圖6 分布式網(wǎng)絡(luò)爬蟲測試Fig.6 Distributed web crawler testing

          圖6中每條線的斜率就代表其爬蟲的爬取效率.從圖6中可以看出一個節(jié)點進行爬取時的效率要遠遠低于兩個節(jié)點同時爬取時的效率.綜上所述分布式爬蟲爬取的效率遠高于單機爬蟲.

          4 結(jié)束語

          本文通過對開源網(wǎng)絡(luò)爬蟲Scrapy框架的深入研究和擴展,利用Scrapy-redis組件之間的相互作用,設(shè)計和實現(xiàn)了一個分布式的網(wǎng)絡(luò)爬蟲系統(tǒng);通過與數(shù)據(jù)庫的連接,將爬取的數(shù)據(jù)存入MongoDB中,便于對數(shù)據(jù)進行查詢、統(tǒng)計和分析;同時在技術(shù)上也為數(shù)據(jù)研究人員提供了方便的數(shù)據(jù)獲取方法. 但是本文只對URL進行了去重處理,并沒有考慮節(jié)點爬取的負載均衡問題,同時爬取過程中網(wǎng)頁被重置問題目前也沒有好的解決辦法,這些問題需要進一步的探索研究.

          [1] VLADISLAV Shkapenyuk,TORSTEN Suel.Desigen and Imlementation of a High-Performance Distributed Web Crawler.Technical Report,In Proceedings of the 18th International conference on Data Engineering(ICDE)[C]∥IEEE CS Press,2001:357-368.

          [2] 薛麗敏,吳琦,李駿.面向?qū)S眯畔@取的用戶定制主題網(wǎng)絡(luò)爬蟲技術(shù)研究[J].信息網(wǎng)絡(luò)安全,2017(2):28-31.

          [3] 王素華.基于網(wǎng)絡(luò)爬蟲技術(shù)的學生信息收集方法[J].電腦迷,2016(3):89-92.

          [4] HANS Bjerkander,ERIK Karlsson.Distributed Web-Crawler[D].Master Thesis Chalmers University of Technology,2013:1-2.

          [5] 郭濤,黃銘鈞.社區(qū)網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J].智能計算機與應(yīng)用,2012(4):78-92.

          [6] 董日壯,郭曙超.網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2014(17):201-205.

          [7] JUNGHOO Cho,HECTOR Garcia-Molina.Parallel crawlers[C]∥Of the 11th International World-Wide Web Conference,2002:32-35.

          [8] 李勇,韓亮.主題搜索引擎中網(wǎng)絡(luò)爬蟲的搜索策略研究[J].計算機工程與科學,2008(3):42-45.

          [9] 黃聰,李格人,羅楚.大數(shù)據(jù)時代下爬蟲技術(shù)的興起 [J].計算機光盤軟件與應(yīng)用,2013(17):79-80.

          [10] 趙鵬程.分布式書籍網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與現(xiàn)[D].成都:西南交通大學,2014.

          [11] MOHR G,STACK M,RNITOVIC I,et al.Introduction to heritrix [C]∥4th International Web Archiving Workshop,2004:109-115.

          [12] CATTELL R.Scalable SQL and NoSQL data store [J].ACM SIGMOD Record,2011(2):12-27.

          [13] 劉學.分布式多媒體網(wǎng)絡(luò)爬行系統(tǒng)的設(shè)計與實現(xiàn) [D].武漢:華中科技大學,2012:10-25.

          [14] 李賢芳.面向作戰(zhàn)系統(tǒng)應(yīng)用的數(shù)據(jù)分發(fā)中間的研究與設(shè)計[D].南京:南京理工大學,2013.

          [15] THELWALl M.A web crawler design for data mining[J].Journal of Information Science,2001,27(5):319-325.

          [16] 徐亦璐.基于多線程的網(wǎng)絡(luò)爬蟲設(shè)計與實現(xiàn)[J].計算機光盤軟件與應(yīng)用,2011(2):152-152.

          [17] 王勁東.基于高級數(shù)據(jù)加密標準 AES 的數(shù)據(jù)庫加密技術(shù)研究與實現(xiàn)[D].西安:西安電子科技大學,2011.

          [18] 雷德龍,郭殿升,陳崇成,等.基于MongoDB的矢量空間數(shù)據(jù)云存儲與處理系統(tǒng)[J].地球信息科學學報,2014(4):65-67.

          責任編輯:時 凌

          Design and Implementation of Distributed Crawler System Based on Scrapy

          LI Daiyi1,XIE Liyan2,QIAN Shenyi1,WU Huaiguang1*

          (1.School of Computer and Communication Engineerring,Zhengzhou University of Light Industry,Zhengzhou 450002,China; 2.Henan School of Administration of Industry and Commerce,Zhengzhou 450002,China)

          With the rapid growth of the Internet,the amount of information and related services are growing rapidly.How to capture the information from massive information quickly and accurately is becoming more and more important,so the network crawler is also facing great challenges and opportunities.At present,domestic and foreign large search engines can only provide non-customizable search services for users,and a single-machine web crawler cannot assume the difficult task.Therefore,the distributed web crawler with flexible customization,high information acquisition speed and large scale has come into being.In this paper,through the study of the original Scrapy framework,the original crawler framework is improved by combining Scrapy and Redis,and a distributed crawler system based on Web information Scrapy framework is designed and implemented.The second-hand housing information captured from www.anjuke.com,www.58.com and www.fang.com is stored in MongoDB,so that the data can be processed and analyzed.The results show that the distributed crawler system based on Scrapy framework is more efficient and stable than the single-machine web crawler system.

          Scrapy;distributed;Scrapy-Reids;Web crawler;MongoDB;data storage

          2017-05-24.

          國家自然科學基金項目(61672470);河南省科技攻關(guān)項目(162102410076);河南省重大科技專項(161100110900).

          李代祎(1988-),男,碩士生,主要從事計算機技術(shù),數(shù)據(jù)挖掘,機器學習等的研究;*

          吳懷廣(1976-),男,博士,副教授,主要從事大數(shù)據(jù)、軟件工程、形式化方法、空間移動計算等的研究.

          1008-8423(2017)03-0317-06

          10.13501/j.cnki.42-1569/n.2017.09.016

          TP3

          A

          猜你喜歡
          爬蟲隊列網(wǎng)頁
          利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
          基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
          隊列里的小秘密
          基于多隊列切換的SDN擁塞控制*
          軟件(2020年3期)2020-04-20 00:58:44
          在隊列里
          基于CSS的網(wǎng)頁導航欄的設(shè)計
          電子制作(2018年10期)2018-08-04 03:24:38
          利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
          電子測試(2018年1期)2018-04-18 11:53:04
          豐田加速駛?cè)胱詣玉{駛隊列
          基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
          電子制作(2017年2期)2017-05-17 03:54:56
          大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
          電子制作(2017年9期)2017-04-17 03:00:46
        一二三四区中文字幕在线| 欧美成人在线A免费观看| 日韩欧美第一区二区三区| 亚洲av一区二区国产精品| 国产三级精品三级在专区中文| 一区二区三区日韩精品视频| 成熟了的熟妇毛茸茸| 无码一区二区三区亚洲人妻| 亚洲精品国偷拍自产在线观看蜜臀| 曰韩精品无码一区二区三区| 国产美女三级视频网站| 日韩有码在线免费视频| 白白白在线视频免费播放| 色哟哟精品视频在线观看| a级国产乱理论片在线观看| 亚洲自拍另类欧美综合| 亚洲av噜噜狠狠蜜桃| 精品福利一区二区三区| 第一次处破女18分钟高清| 特级a欧美做爰片第一次| 亚洲深深色噜噜狠狠爱网站| 亚洲国产精品久久久性色av| av资源吧首页在线观看| 青青草小视频在线观看| 亚洲av无码国产精品色午夜字幕| 在线精品一区二区三区| 国产一区a| 亚洲中文字幕乱码一二三区| 日产国产精品亚洲高清| 色噜噜亚洲男人的天堂| 中文字幕久久精品一二三区| 亚洲人成综合网站在线| 国产精品,在线点播影院| 狼狼色丁香久久女婷婷综合| 人人妻人人澡人人爽人人精品av | 免费看欧美日韩一区二区三区| 中文字幕日本韩国精品免费观看| 亚洲国产天堂久久综合网| 疯狂做受xxxx国产| 最好看的最新高清中文视频| 亚洲精品中文字幕不卡在线|