本文僅供學(xué)習(xí)參考作用,概不對任何事情進行負責(zé)!
前言
當(dāng)我們在對網(wǎng)上的數(shù)據(jù)進行爬取,但是需要爬取的數(shù)據(jù)量特別大,爬取的時間特別長的時候(比如需要爬一周),我們難免會思考一個問題:我總不可能一直將電腦開著去抓取數(shù)據(jù)吧?
這個時候我們一般有兩種解決方案:1.購買云服務(wù)器進行24小時的爬取.2.通過爬蟲托管網(wǎng)站進行24小時的爬取.
本文將介紹第二種方法,通過scrapy的scrapyinghub實現(xiàn)24小時的爬蟲托管爬取
目錄
1.需求背景
2.scapyinghub介紹
3.實現(xiàn)流程
1.需求背景
最近學(xué)校有一門搜索引擎的課程,我們需要搭建一個自己的搜索引擎.搭建搜索引擎的過程中我們需要有數(shù)據(jù)進行填充.這個時候我們準(zhǔn)備將中國可移動文物普查網(wǎng)中的所有文物數(shù)據(jù)爬取到我們手中,并對拿到的數(shù)據(jù)進行二次加工組裝成屬于我們自己的文物搜索引擎.由于需要爬取的文物數(shù)據(jù)很多,有23w左右,所以在本地爬取的技術(shù)路線我們放棄,并且想到了通過scrapyinghub進行爬蟲托管.
2.scrapyinghub介紹
scrapyinghub地址:
Scrape Cloud是scrapy基于云的Web爬行平臺,可以輕松部署抓取工具并按需擴展,無需擔(dān)心服務(wù)器,監(jiān)控,備份或cron作業(yè)。他幫助開發(fā)人員每月將超過20億個網(wǎng)頁轉(zhuǎn)化為有價值的數(shù)據(jù).

3.實現(xiàn)流程
3.1部署scrapy到cloud
有梯子的同學(xué)可以看官網(wǎng)的教程
首先我們在scrapyinghub上注冊一個賬號并且登錄到管理控制臺,點擊右上方的create project按鈕新建一個項目

當(dāng)然了,我們只是將先有的scrapy爬蟲部署到云上去,所以我們選擇bulid spider with scrapy

然后我們將視線轉(zhuǎn)移到我們的服務(wù)器上,首先安裝shub
pip install shub

安裝成以后,在服務(wù)器上登錄我們的scrapy cloud
shub login

提示輸入API key ,我們復(fù)制命令行中出現(xiàn)的網(wǎng)址并且進入

復(fù)制其中的API key到shell中

成功!
這個時候我們就需要使用shub deploy命令將本地的scrapy上傳到cloud
shub deploy

由于我們之前操作過,所以自動將
projectID填入了.當(dāng)然了,如果我們是第一次使用的話只需要在我們cloud的控制臺的URL中找到projectID并輸入到shell中即可

上傳scrapy成功!

這個時候我們就可以在cloud上運行我們的spider了!在
Dashborad選項卡中的右上方點擊run,我們就可以愉快的選擇我們的spider啦!

3.2爬取優(yōu)化方案
對于23W的數(shù)據(jù),我們在之前的初步爬取中按照當(dāng)前cloud的爬取速度我們預(yù)估要24個整天才能爬完,這個速度我們顯然是不能接受的.
于是我們優(yōu)化爬取方案為將當(dāng)前爬蟲分解成10個爬蟲對網(wǎng)站進行爬取.這種方法也有隱患:過多的爬蟲會導(dǎo)致網(wǎng)站服務(wù)器壓力倍增,很可能導(dǎo)致其網(wǎng)站癱瘓.
所以,考慮到這個情況,我們將爬蟲的爬取時間設(shè)置成了晚上11點到早上11點.
優(yōu)化過后的爬蟲方案,將爬取的時間縮短為了4.8天,大大的增加了爬取的效率.
小Tips:scrapyinghub默認一個project只能同時run一個爬蟲,所以如何讓多個爬蟲同時運行在scrapyinghub以提升爬取效率呢?我們只需要新建多個organization即可,每一個organization都可以run一個爬蟲~


現(xiàn)在我們就有2個正在run的爬蟲啦~