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

瀏覽器訪問(wèn):http://127.0.0.1:6800/

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

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

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

上圖表示運(yùn)行成功!

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

2.啟動(dòng)爬蟲
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ù)來(lái)爬取數(shù)據(jù)
key=表示關(guān)鍵字(默認(rèn)是全部)
time=表示時(shí)間(0=24小時(shí),1=3天內(nèi),2=一周內(nèi),3=一個(gè)月內(nèi),默認(rèn)為0)
當(dāng)然scrapyd強(qiáng)大之處在于可以用http方式控制爬蟲
http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0 #POST
以下是用postmain進(jìn)行模擬post請(qǐng)求。

然后進(jìn)入http://127.0.0.1:6800/
點(diǎn)擊job,就可以查看爬蟲是否運(yùn)行,和運(yùn)行時(shí)間

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

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


四、問(wèn)題與思考
- 通過(guò)爬去可以看得出,如果采用單一的爬蟲的話,爬取速度還是比較慢的,如果采用多個(gè)爬蟲,分布式爬取的話,就存在數(shù)據(jù)是否重復(fù)以及數(shù)據(jù)的共用問(wèn)題。
- 如果采用分布式爬蟲的話,就涉及到ip代理,因?yàn)橐慌_(tái)機(jī)器如果大量訪問(wèn)的話經(jīng)過(guò)測(cè)試會(huì)導(dǎo)致瀏覽器訪問(wèn),該網(wǎng)頁(yè)都無(wú)法打開,如果設(shè)置IP代理,就需要大量的代理IP
- 雖然爬蟲已經(jīng)部署在服務(wù)器上,但是還是無(wú)法做到,通過(guò)用戶輸入關(guān)鍵字時(shí)間等地址等多個(gè)參數(shù)進(jìn)行爬取數(shù)據(jù),無(wú)法做到實(shí)時(shí)展示,只能先運(yùn)行爬蟲,爬取大量數(shù)據(jù)儲(chǔ)存與數(shù)據(jù)庫(kù),然后才能進(jìn)行分析,做出圖表。
- 關(guān)于數(shù)據(jù)的統(tǒng)計(jì)與展示,單一的sql語(yǔ)句,很難滿足其對(duì)大量數(shù)據(jù)的分析,可能需要用Python的數(shù)據(jù)分析庫(kù),對(duì)數(shù)據(jù)進(jìn)行處理,然后才能展示。
五、收獲
已經(jīng)可以通過(guò)http請(qǐng)求的方式來(lái)控制爬蟲的啟動(dòng)停止,以及傳遞參數(shù),就等于scrapy爬蟲是可以集成于web應(yīng)用里面的。
到此這篇關(guān)于scrapy爬蟲部署服務(wù)器的方法步驟的文章就介紹到這了,更多相關(guān)scrapy爬蟲部署服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python post請(qǐng)求實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Python post請(qǐng)求實(shí)現(xiàn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Python按照某列內(nèi)容對(duì)兩個(gè)DataFrame進(jìn)行合并操作方法
這篇文章主要給大家介紹了關(guān)于Python按照某列內(nèi)容對(duì)兩個(gè)DataFrame進(jìn)行合并操作的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并采集信息的方法
這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并采集信息的方法,涉及Python模擬登陸及正則匹配的相關(guān)技巧,需要的朋友可以參考下2015-06-06
pyqt彈出新對(duì)話框,以及關(guān)閉對(duì)話框獲取數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇pyqt彈出新對(duì)話框,以及關(guān)閉對(duì)話框獲取數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python?包?requests?實(shí)現(xiàn)請(qǐng)求操作
這篇文章主要介紹了python?包?requests?實(shí)現(xiàn)請(qǐng)求操作,文章介紹內(nèi)容包括帶參數(shù)請(qǐng)求、自定義headers,文章內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04

