scrapy爬蟲部署服務(wù)器的方法步驟
一、scrapy爬蟲部署服務(wù)器
scrapy通過命令行運行一般只用于測試環(huán)境,而用于運用在生產(chǎn)環(huán)境則一般都部署在服務(wù)器中進行遠(yuǎn)程操作。
scrapy部署服務(wù)器有一套完整的開源項目:scrapy+scrapyd(服務(wù)端)+scrapy-client(客戶端)+scrapydweb
1、scrapyd
1.介紹
Scrapyd是用于部署和運行Scrapy爬蟲的應(yīng)用程序。它使您可以使用JSON API部署(上傳)項目并控制其爬蟲。
是目前分布式爬蟲的最好解決方法之一
官方文檔 https://scrapyd.readthedocs.io/
2.安裝
pip install scrapyd
安裝過程中可能會遇到大量的錯誤,大部分都是所依賴的包沒有安裝,安裝過程中要確保scrapy已經(jīng)安裝成功,只要耐心的將所有缺少的依賴包安裝上就可以了
打開命令行,輸入scrapyd,如下圖:

瀏覽器訪問:http://127.0.0.1:6800/

2、scrapy-client
1.介紹:
scrapy-client它允許我們將本地的scrapy項目打包發(fā)送到scrapyd 這個服務(wù)端(前提是服務(wù)器scrapyd正常運行)
官方文檔https://pypi.org/project/scrapyd-client/
2.安裝
pip install scrapy-client
和上面的scrapyd一樣,可能會遇到各種錯誤,耐心一點,大部分都是安裝依賴
3、scrapydweb(可選)
1.介紹
ScrapydWeb:用于Scrapyd集群管理的Web應(yīng)用程序,支持Scrapy日志分析和可視化。
官方文檔:https://pypi.org/project/scrapydweb/
2.安裝
pip install scrapyd
在保持scrapyd掛起的情況下運行命令scrapydweb,也就是需要打開兩個doc窗口
運行命令scrapydweb,首次啟動將會在當(dāng)前目錄下生成配置文件“scrapydweb_settings_v*.py”
更改配置文件
編輯配置文件,將ENABLE_LOGPARSER更改為False
添加訪問權(quán)限
SCRAPYD_SERVERS = [
'127.0.0.1:6800',
# 'username:password@localhost:6801#group',
('username', 'password', 'localhost', '6801', 'group'),
]
HTTP基本認(rèn)證
ENABLE_AUTH = True USERNAME = 'username' PASSWORD = 'password'
瀏覽器訪問:http://127.0.0.1:5000/1/servers/

二、實際操作(一切的操作都在scrapyd啟動的情況下)
1.上傳爬蟲

編輯scrapy.cfg,url是scrapyd服務(wù)器的位置,由于scrapyd在本地,所以是localhost。
注意:我們要切換到和scrapy.cfg同級目錄下,繼續(xù)以下操作
scrapyd-deploy

上圖表示運行成功!

以上的文件夾是成功后自動創(chuàng)建的(為什么之前的截圖有,我之前已經(jīng)測試過)
然后輸入以下命令上傳服務(wù)器
scrapyd-deploy demo -p qcjob
結(jié)構(gòu):scrapyd-deploy -p (scrapyd-deploy <目標(biāo)> -p <項目>)
運行成功的圖片

2.啟動爬蟲
cmd輸入(爬取一天內(nèi)關(guān)于java的職業(yè)需求)
curl http://localhost:6800/schedule.json -d project=qcjob -d spider=job -d key = java time=0
我編寫的爬蟲可以根據(jù)用戶輸入的參數(shù)來爬取數(shù)據(jù)
key=表示關(guān)鍵字(默認(rèn)是全部)
time=表示時間(0=24小時,1=3天內(nèi),2=一周內(nèi),3=一個月內(nèi),默認(rèn)為0)
當(dāng)然scrapyd強大之處在于可以用http方式控制爬蟲
http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0 #POST
以下是用postmain進行模擬post請求。

然后進入http://127.0.0.1:6800/
點擊job,就可以查看爬蟲是否運行,和運行時間

從圖可以看出,這個爬蟲運行了9分31秒。
當(dāng)然我們也可以從scrapydweb中查看和管理爬蟲瀏覽器訪問:http://127.0.0.1:5000/1/servers/

我們可以通過可視化界面來控制爬蟲運行,scrapyd可以啟動多個不同的爬蟲,一個爬蟲的多個版本啟動。是目前分布式爬蟲的最好解決方法?。?!
三、數(shù)據(jù)展示
本次爬取花費9分31秒,共爬去25,000余條數(shù)據(jù),爬蟲速度開至每秒8次訪問,以他該服務(wù)器的最大訪問量
其中部分?jǐn)?shù)據(jù)存在有誤,為了保證速度,沒有進行過多的篩取和排查,錯誤率保持較低水平


四、問題與思考
- 通過爬去可以看得出,如果采用單一的爬蟲的話,爬取速度還是比較慢的,如果采用多個爬蟲,分布式爬取的話,就存在數(shù)據(jù)是否重復(fù)以及數(shù)據(jù)的共用問題。
- 如果采用分布式爬蟲的話,就涉及到ip代理,因為一臺機器如果大量訪問的話經(jīng)過測試會導(dǎo)致瀏覽器訪問,該網(wǎng)頁都無法打開,如果設(shè)置IP代理,就需要大量的代理IP
- 雖然爬蟲已經(jīng)部署在服務(wù)器上,但是還是無法做到,通過用戶輸入關(guān)鍵字時間等地址等多個參數(shù)進行爬取數(shù)據(jù),無法做到實時展示,只能先運行爬蟲,爬取大量數(shù)據(jù)儲存與數(shù)據(jù)庫,然后才能進行分析,做出圖表。
- 關(guān)于數(shù)據(jù)的統(tǒng)計與展示,單一的sql語句,很難滿足其對大量數(shù)據(jù)的分析,可能需要用Python的數(shù)據(jù)分析庫,對數(shù)據(jù)進行處理,然后才能展示。
五、收獲
已經(jīng)可以通過http請求的方式來控制爬蟲的啟動停止,以及傳遞參數(shù),就等于scrapy爬蟲是可以集成于web應(yīng)用里面的。
到此這篇關(guān)于scrapy爬蟲部署服務(wù)器的方法步驟的文章就介紹到這了,更多相關(guān)scrapy爬蟲部署服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用python實現(xiàn)日志文件,并且按時間命名文件名方式
這篇文章主要介紹了用python實現(xiàn)日志文件,并且按時間命名文件名方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
關(guān)于Python中Flask全局異常處理流程詳解
Flask是一個基于Python的Web框架,它提供了全局異常處理的機制來捕獲和處理應(yīng)用程序中的異常,本文將詳細(xì)介紹Flask的全局異常處理,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2023-06-06
pandas如何將dataframe中的NaN替換成None
這篇文章主要介紹了pandas如何將dataframe中的NaN替換成None問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
對Tensorflow中tensorboard日志的生成與顯示詳解
今天小編就為大家分享一篇對Tensorflow中tensorboard日志的生成與顯示詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python實現(xiàn)監(jiān)控windows服務(wù)并自動啟動服務(wù)示例
這篇文章主要介紹了python實現(xiàn)監(jiān)控windows服務(wù)并自動啟動服務(wù)示例,需要的朋友可以參考下2014-04-04

