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

基于Scrapy框架的分布式網絡爬蟲實現

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

陶興海

摘 要根據互聯網實際情況,提出分布式爬蟲模型,基于Scrapy框架,進行代碼實現,且該開發方式可以迅速進行對不同主題的數據爬取的移植,滿足不同專業方向的基于互聯網大數據分析需要。

【關鍵詞】網絡爬蟲 Scrapy-redis 分布式

1 基本概念

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

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

2 分布式爬蟲技術方案

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

主要有幾個技術關鍵點:

2.1 子爬蟲爬取任務的分發

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

2.2 用戶登錄

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

2.3 url的去重

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

2.4 數據寫入

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

3 基本實現步驟

配置: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

代碼實現需要對幾個文件進行設置和編寫:items、settings、spiders、pipelines。

Items:這是一個爬取數據的基礎數據結構類,由其來存放爬蟲爬取的鍵值性數據,關鍵的就是這條語句:_id = Field() _id表示的生成一個數據對象,在Items中可以根據需要設定多個數據對象。

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

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

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

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

4 結語

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

參考文獻

[1]使用redis如何實現一個網路分布式爬蟲[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的去重優化[OL].http://blog.csdn.net/bone_ace/article/details/53099042.

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

作者單位

廣西廣播電視大學教學資源中心 廣西壯族自治區南寧市 530023

主站蜘蛛池模板: 亚洲欧美另类久久久精品播放的| 99精品视频在线观看免费播放| 国产精品开放后亚洲| 高清免费毛片| 1024国产在线| 成人国产精品视频频| 久久夜夜视频| 亚洲Av激情网五月天| 日韩国产另类| 一区二区三区国产| 久久精品人人做人人爽| 91香蕉视频下载网站| 国产午夜一级毛片| 国产另类视频| 日韩精品久久久久久久电影蜜臀| 精品国产一二三区| 亚洲日本中文字幕天堂网| 国产玖玖玖精品视频| 亚洲日本中文字幕天堂网| 国产极品美女在线播放| 精品综合久久久久久97| 亚洲制服丝袜第一页| 成人午夜久久| 亚洲制服丝袜第一页| 久久精品aⅴ无码中文字幕| 久久不卡国产精品无码| 亚洲欧美一区二区三区图片| 国产原创演绎剧情有字幕的| 欧美有码在线观看| 亚洲综合第一区| h视频在线观看网站| 色综合久久88| 亚洲va在线观看| 乱色熟女综合一区二区| 国产成人精品一区二区三在线观看| 久久精品免费看一| 亚洲精品国产首次亮相| 激情爆乳一区二区| 波多野衣结在线精品二区| 91精品国产麻豆国产自产在线 | 国产精品手机在线观看你懂的| 亚洲男人的天堂久久香蕉| 97在线公开视频| 国产成人精品一区二区| 久久伊人久久亚洲综合| 日韩一级毛一欧美一国产| 成人伊人色一区二区三区| 国产无码性爱一区二区三区| 婷婷综合色| 亚亚洲乱码一二三四区| 亚洲高清无码精品| 亚洲无码熟妇人妻AV在线| 最新亚洲av女人的天堂| 岛国精品一区免费视频在线观看| P尤物久久99国产综合精品| 黄色网址免费在线| 成人国产一区二区三区| 亚洲欧美精品在线| 天堂成人在线| 国产乱人伦AV在线A| 午夜国产不卡在线观看视频| 久久精品无码一区二区日韩免费| 999国产精品永久免费视频精品久久 | 久久婷婷五月综合色一区二区| 国内精品免费| 亚洲黄网在线| 真人免费一级毛片一区二区| 国产成人精品在线1区| 成人午夜天| 色综合久久88| 亚洲国产精品日韩专区AV| 亚洲人成网站观看在线观看| 国产99免费视频| 中文字幕久久波多野结衣| 亚洲精品波多野结衣| 97视频免费在线观看| 亚洲欧美另类日本| 欧美一级大片在线观看| 成人午夜网址| 女同国产精品一区二区| 51国产偷自视频区视频手机观看 | 一本色道久久88亚洲综合|