本文僅供學習參考作用,概不對任何事情進行負責!
前言
當我們在對網(wǎng)上的數(shù)據(jù)進行爬取,但是需要爬取的數(shù)據(jù)量特別大,爬取的時間特別長的時候(比如需要爬一周),我們難免會思考一個問題:我總不可能一直將電腦開著去抓取數(shù)據(jù)吧?
這個時候我們一般有兩種解決方案:1.購買云服務器進行24小時的爬取.2.通過爬蟲托管網(wǎng)站進行24小時的爬取.
本文將介紹第二種方法,通過scrapy的scrapyinghub實現(xiàn)24小時的爬蟲托管爬取
目錄
1.需求背景
2.scapyinghub介紹
3.實現(xiàn)流程
1.需求背景
最近學校有一門搜索引擎的課程,我們需要搭建一個自己的搜索引擎.搭建搜索引擎的過程中我們需要有數(shù)據(jù)進行填充.這個時候我們準備將中國可移動文物普查網(wǎng)中的所有文物數(shù)據(jù)爬取到我們手中,并對拿到的數(shù)據(jù)進行二次加工組裝成屬于我們自己的文物搜索引擎.由于需要爬取的文物數(shù)據(jù)很多,有23w左右,所以在本地爬取的技術路線我們放棄,并且想到了通過scrapyinghub進行爬蟲托管.
2.scrapyinghub介紹
scrapyinghub地址:
Scrape Cloud是scrapy基于云的Web爬行平臺祥款,可以輕松部署抓取工具并按需擴展倾剿,無需擔心服務器,監(jiān)控骚腥,備份或cron作業(yè)策橘。他幫助開發(fā)人員每月將超過20億個網(wǎng)頁轉化為有價值的數(shù)據(jù).
3.實現(xiàn)流程
3.1部署scrapy到cloud
有梯子的同學可以看官網(wǎng)的教程
首先我們在scrapyinghub上注冊一個賬號并且登錄到管理控制臺,點擊右上方的create project
按鈕新建一個項目
當然了,我們只是將先有的scrapy爬蟲部署到云上去,所以我們選擇bulid spider with scrapy
然后我們將視線轉移到我們的服務器上,首先安裝shub
pip install shub
安裝成以后,在服務器上登錄我們的scrapy cloud
shub login
提示輸入API key ,我們復制命令行中出現(xiàn)的網(wǎng)址并且進入
復制其中的API key到shell中
成功!
這個時候我們就需要使用shub deploy
命令將本地的scrapy上傳到cloud
shub deploy
由于我們之前操作過,所以自動將
projectID
填入了.當然了,如果我們是第一次使用的話只需要在我們cloud的控制臺的URL中找到projectID
并輸入到shell中即可
上傳scrapy成功!
這個時候我們就可以在cloud上運行我們的spider了!在
Dashborad
選項卡中的右上方點擊run
,我們就可以愉快的選擇我們的spider啦!
3.2爬取優(yōu)化方案
對于23W的數(shù)據(jù),我們在之前的初步爬取中按照當前cloud的爬取速度我們預估要24個整天才能爬完,這個速度我們顯然是不能接受的.
于是我們優(yōu)化爬取方案為將當前爬蟲分解成10個爬蟲對網(wǎng)站進行爬取.這種方法也有隱患:過多的爬蟲會導致網(wǎng)站服務器壓力倍增,很可能導致其網(wǎng)站癱瘓.
所以,考慮到這個情況,我們將爬蟲的爬取時間設置成了晚上11點到早上11點.
優(yōu)化過后的爬蟲方案,將爬取的時間縮短為了4.8天,大大的增加了爬取的效率.
小Tips:scrapyinghub默認一個project只能同時run一個爬蟲,所以如何讓多個爬蟲同時運行在scrapyinghub以提升爬取效率呢?我們只需要新建多個organization即可,每一個organization都可以run一個爬蟲~
現(xiàn)在我們就有2個正在run的爬蟲啦~