999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Scrapy框架的分布式網(wǎng)絡(luò)爬蟲實現(xiàn)

2017-06-10 02:33:56陶興海
電子技術(shù)與軟件工程 2017年11期

陶興海

摘 要根據(jù)互聯(lián)網(wǎng)實際情況,提出分布式爬蟲模型,基于Scrapy框架,進行代碼實現(xiàn),且該開發(fā)方式可以迅速進行對不同主題的數(shù)據(jù)爬取的移植,滿足不同專業(yè)方向的基于互聯(lián)網(wǎng)大數(shù)據(jù)分析需要。

【關(guān)鍵詞】網(wǎng)絡(luò)爬蟲 Scrapy-redis 分布式

1 基本概念

分布式爬蟲:分布式方式是以共同爬取為目標,形成多爬蟲協(xié)同工作的模式,每個爬蟲需要獨立完成單項爬取任務(wù),下載網(wǎng)頁并保存。

Scrapy-redis:一個三方的基于redis數(shù)據(jù)庫實現(xiàn)的分布式方式,配合scrapy爬蟲框架使用,讓scrapy具有了分布式爬取的功能。

2 分布式爬蟲技術(shù)方案

Scrapy-redis分布式爬蟲的基本設(shè)計理念為主從模式,由作為主控端負責(zé)所有網(wǎng)絡(luò)子爬蟲的管理,子爬蟲只需要從主控端那里接收任務(wù),并把新生成任務(wù)提交給主控端,在整個爬取的過程中不必與其他爬蟲通信。

主要有幾個技術(shù)關(guān)鍵點:

2.1 子爬蟲爬取任務(wù)的分發(fā)

通過在主控端安裝一個redis數(shù)據(jù)庫,維護統(tǒng)一的任務(wù)列表,子爬蟲每次連接redis庫調(diào)用lpop()方法,生成一個任務(wù),并生成一個request,接下去就是如同一般爬蟲工作。

2.2 用戶登錄

由于網(wǎng)站對于游客的訪問有限制,為了爬取所需信息,必須在程序中實現(xiàn)用戶登錄,其原理就是能獲取到有效的本地cookie,并利用該cookie進行網(wǎng)站訪問,除了一般能夠用第三方庫進行圖像識別的驗證方式外,一般采用瀏覽器中手動登錄,通過網(wǎng)絡(luò)工具截取有效的cookie,然后在爬蟲生成request時附帶上cookie。

2.3 url的去重

scrapy_redis有一個dupefilter文件中包含RFPDupeFilter類用于過濾新增的url,可以在該類request_seen中利用redis的key的查找功能,如果所爬取的任務(wù)數(shù)以億計則建議Bloomfilter去重的方式對于URL的存儲和操作方式進行優(yōu)化,雖然該方式會造成小于萬分之一的過濾遺失率。

2.4 數(shù)據(jù)寫入

選擇非關(guān)系性數(shù)據(jù)庫MongoDB作為硬盤數(shù)據(jù)庫與scrapy進行搭配使用,在pipeline中對item數(shù)據(jù)進行MongoDB的寫入操作。

3 基本實現(xiàn)步驟

配置:Windows7 64-bit、Python:2.7.11、 Anaconda 4.0.0 (64-bit)、IDE:Pycharm 3.4.1、Scrapy:1.3.2Redis:X64-3.2、MongoDB:3.2.12

代碼實現(xiàn)需要對幾個文件進行設(shè)置和編寫:items、settings、spiders、pipelines。

Items:這是一個爬取數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)類,由其來存放爬蟲爬取的鍵值性數(shù)據(jù),關(guān)鍵的就是這條語句:_id = Field() _id表示的生成一個數(shù)據(jù)對象,在Items中可以根據(jù)需要設(shè)定多個數(shù)據(jù)對象。

Settings:ITEM_PIPELINES該參數(shù)決定了item的處理方法;DOWNLOAD_DELAY這個是下載的間隔時間;SCHEDULER指定作為總的任務(wù)協(xié)調(diào)器的類;SCHEDULER_QUEUE_CLASS這個參數(shù)是設(shè)定處理URL的隊列的工作模式一共有四種,一般選用SpiderSimpleQueue即可。

spiders:該文件就是爬蟲主要功能的實現(xiàn),首先設(shè)定該爬蟲的基本信息:name、domain、redis_key、start_urls。爬蟲的第一步都是執(zhí)行方法start_requests,其中核心語句yield Request(url,callback)用以根據(jù)url產(chǎn)生一個request并且將response結(jié)果回傳給callback方法。callback的方法中一般利用xpath或者正則表達式對response中包含的html代碼進行解析,產(chǎn)生所需要的數(shù)據(jù)以及新的任務(wù)url。

pipelines:該文件作為數(shù)據(jù)處理、存儲的代碼段,將在items數(shù)據(jù)被創(chuàng)建后被調(diào)用,其中process_item的方法就是被調(diào)用的方法,所以一定要將其重寫,根據(jù)實際需要把數(shù)據(jù)利用方法dict()轉(zhuǎn)化為字典數(shù)據(jù),最后寫入MongoDB。

完成編寫后,在部署的時候,start_url的隊列只能是第一個運行的爬蟲進行初始化,后續(xù)運行的爬蟲只能是把新的url進行寫入不能對其進行再次初始化,部署爬蟲的步驟也很簡單,只需要把相關(guān)的代碼拷貝到目標電腦上,讓后cmd命令進入spiders的文件夾,運行命令scrapy crawl XXXX,其中XXXX就是爬蟲的名字,就完成了爬蟲的部署和運行了。

4 結(jié)語

爬蟲的實現(xiàn),除了基本的步驟和參數(shù)設(shè)置之外,需要開發(fā)者根據(jù)實際網(wǎng)站以及數(shù)據(jù)情況,針對性的對爬取的策略、數(shù)據(jù)的去重、數(shù)據(jù)篩選進行處理,對于爬蟲的性能進行有效優(yōu)化,為之后的數(shù)據(jù)分析做好良好的數(shù)據(jù)準備。同時,根據(jù)需要可以考慮時間的因素加入到數(shù)據(jù)結(jié)構(gòu)中,這就要求爬蟲能夠通過數(shù)據(jù)的時間去進行增量爬取。

參考文獻

[1]使用redis如何實現(xiàn)一個網(wǎng)路分布式爬蟲[OL].http://www.oschina.net/code/snippet_209440_20495/.

[2]scrapy_redis的使用詳解[OL].http://www.cnblogs.com/kylinlin/p/5198233.html.http://blog.csdn.net/u012150179/article/details/38091411.

[3]scrapy_redis的去重優(yōu)化[OL].http://blog.csdn.net/bone_ace/article/details/53099042.

[4]scrapy_redis實現(xiàn)分布式爬取分析[OL].http://blog.csdn.net/u012150179/article/details/38091411.

作者單位

廣西廣播電視大學(xué)教學(xué)資源中心 廣西壯族自治區(qū)南寧市 530023

主站蜘蛛池模板: 视频一本大道香蕉久在线播放| 久久精品这里只有精99品| 无码视频国产精品一区二区| 欧美性天天| 网友自拍视频精品区| 九九热精品免费视频| 免费观看无遮挡www的小视频| 99爱在线| 五月天婷婷网亚洲综合在线| 日韩经典精品无码一区二区| 精品少妇人妻无码久久| 色吊丝av中文字幕| 久久久久88色偷偷| 国产手机在线ΑⅤ片无码观看| 国产丝袜丝视频在线观看| 97综合久久| 最新亚洲人成网站在线观看| 91偷拍一区| 日韩在线视频网站| 精品一区国产精品| 国产精品不卡片视频免费观看| 欧美国产日韩另类| 婷婷六月综合网| 亚洲精品国产日韩无码AV永久免费网 | 在线a视频免费观看| 国产丝袜91| 欲色天天综合网| 毛片网站免费在线观看| 丰满少妇αⅴ无码区| 国产一国产一有一级毛片视频| 日本高清免费不卡视频| 91久久精品国产| 亚洲va视频| 亚洲福利视频网址| 亚洲乱码在线播放| 91在线丝袜| 欧美69视频在线| a天堂视频在线| 亚洲免费播放| 无码有码中文字幕| 在线一级毛片| 免费日韩在线视频| 国产成人h在线观看网站站| 亚洲中文字幕在线一区播放| 天天综合天天综合| 日韩精品亚洲人旧成在线| 亚洲天堂网2014| 国产精品免费久久久久影院无码| 亚洲男人天堂网址| 麻豆精品久久久久久久99蜜桃| 青青国产视频| 色偷偷av男人的天堂不卡| 国产一在线观看| 扒开粉嫩的小缝隙喷白浆视频| 久久99久久无码毛片一区二区| 伊人色综合久久天天| 日韩中文字幕免费在线观看 | 亚洲人成成无码网WWW| 亚洲AV无码精品无码久久蜜桃| 茄子视频毛片免费观看| 欧美精品一区二区三区中文字幕| 亚洲中文字幕久久无码精品A| 国产肉感大码AV无码| 狠狠色成人综合首页| 国产精品白浆在线播放| 精品无码国产自产野外拍在线| 熟妇人妻无乱码中文字幕真矢织江| 成人福利在线观看| 99尹人香蕉国产免费天天拍| 99免费在线观看视频| 中文无码精品A∨在线观看不卡 | 全部免费毛片免费播放| 97色婷婷成人综合在线观看| 国产鲁鲁视频在线观看| 高清无码一本到东京热| 国产成人凹凸视频在线| 欧美精品在线观看视频| 好吊色国产欧美日韩免费观看| 日韩精品亚洲一区中文字幕| av在线无码浏览| 日韩亚洲综合在线| 亚洲V日韩V无码一区二区|