【編號0003】Scrapy配套的部署工具和部署概念學(xué)習(xí)

在一個Scrapy爬蟲項目寫好之后,啟動和查看日志還不算麻煩,但是如果你的爬蟲多,且啟動方式及時間,比較有要求,那腳本管理,會非常的麻煩,有沒有什么簡單且方便的管理和部署工具呢?

答案當(dāng)然是有的,且這類工具還是比較多的,在此,本篇文章,就是針對于Scrapy項目的部署方式和工具,進(jìn)行介紹

1. scrapy項目的cfg文件

在介紹正式部署前,首先了解下Scrapy的部署內(nèi)容

首先,一個完整的Scrapy項目,里面必須含有cfg后綴文件,和所需的py文件,以及spider目錄下的爬蟲文件,還有可能包含一些自定義的python包和工具函數(shù)。

下圖是一個最基礎(chǔ)的爬蟲項目的目錄結(jié)構(gòu)圖【工具是Pycharm】:

1.png

其中,除了cfg文件之外,其他的py文件,都是給爬蟲運(yùn)行用的,都和部署沒什么關(guān)系。那順便來看下cfg文件的內(nèi)容:

2.png

在這里面,有兩個,第一個是settings,是指定項目中的配置文件;第二個是deploy,是部署用的,不過默認(rèn)的url,被注釋了,因為這是命令行部署用的,不太推薦

2. Scrapy配套的部署工具庫

本篇文章的目的是部署和管理,但是部署的操作還是要學(xué)的,因為這是基礎(chǔ)。

為了方便的管理scrapy項目中爬蟲的運(yùn)行,scrapy框架有配套的部署工具,那就是scrapyd【注意,多了一個d】

這個scrapyd框架,負(fù)責(zé)運(yùn)行scrapyd項目,并且會記錄日志。他的主要功能有:

  • 接收scrapy項目
  • 查看scrapy項目爬蟲
  • 啟動scrapy爬蟲
  • 查看運(yùn)行中的scrapy
  • 查看運(yùn)行結(jié)束的scrapy

功能夠多吧,且說實話,都非常實用。但是呢,操作比較蛋疼,雖然scrapyd提供web界面,但是只能看,不能管理,管理需要命令行,那這就.....不免讓大佬們心癢,紛紛推出了各自的Web管理工具,下文介紹。

那這里呢,來說下scrapy、scrapyd之間的耦合,以及其他的第三方庫。

所需庫的安裝【未展示scrapy的安裝,因為這里介紹部署,默認(rèn)你了解了scrapy的開發(fā)】:

  • pip install scrapyd【運(yùn)行scrapy的容器】
  • pip install scrapyd-client【用于打包scrapy項目到scrapyd中】

這里涉及到scrapyd和scrapyd-client兩個庫,前者是服務(wù)型,用于跑scrapy爬蟲的;后者是工具函數(shù),用于打包scrapy文件的;

3. Scrapyd-client介紹

在scrapyd-client安裝好之后呢,就有scrapy-deploy這個命令,但是你未必可以直接使用,可能會出現(xiàn)如下效果圖:

3.png

問:不是已經(jīng)安裝了scrapyd-client,為什么系統(tǒng)無法識別呢?這個是什么原因?qū)е碌哪兀?/p>

答:是因為呀,在scrapyd-client安裝的時候,提供了scrapyd-deploy的py文件,但是沒有后綴,所以系統(tǒng)不能直接識別

問:那怎么處理呢?

答:這個文件的路徑呢,是在你的Python安裝位置的Scripts目錄下,你需要在這里面,創(chuàng)建一個名為scrapyd-deploy.bat的文件,內(nèi)容是:

@echo off
C:/Users/kelly/Anaconda3/python.exe C:/Users/kelly/Anaconda3/Scripts/Scrapyd-deploy

Tips:

  • @echo off關(guān)閉具體執(zhí)行命令輸出的意思,如果你是win系統(tǒng),可以去掉,對比看看
  • 這里面的路徑,是我電腦上的Python路徑,需要改成你的Python路徑
  • bat是win系統(tǒng)可直接執(zhí)行的文件,如果你的系統(tǒng)是Linux或Macos,需要寫sh或可執(zhí)行文件;

這個文件添加好之后,重開一個CMD【終端】,測試效果,如下截圖:

4.png

這個截圖說明命令行正常工作了,但是當(dāng)前的桌面目錄,不是一個有效的scrapy項目,即不在scrapy項目內(nèi)

那工具的安裝和測試,一切正常了,下面開始學(xué)習(xí)下scrapyd的作用

4. Scrapyd介紹

簡單來描述下,scrapy是一個項目,scrapyd是管理scrapy正常運(yùn)行的容器,可以停止、啟動、查看狀態(tài),當(dāng)然,這些都是命令行啟動【這是最大的缺陷】

當(dāng)然scrapyd也是可以配置的,配置文件在scrapyd庫里面,如下圖:

5.png

打開它,內(nèi)容是這樣的,#后面是添加的注釋:

[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 4 #同時運(yùn)行的最大進(jìn)程數(shù) = 4*核心數(shù)
finished_to_keep = 100
poll_interval = 5.0
bind_address = 127.0.0.1   #本機(jī)用 127.0.0.1,外網(wǎng)訪問改成 0.0.0.0
http_port   = 6800  #默認(rèn)端口,可以改,或者多開
debug       = off   #調(diào)試模式,默認(rèn)關(guān)閉
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

上面都是默認(rèn)配置,通常改了端口或者綁定的IP,其余的都不用怎么修改。

修改好之后,打開CMD,進(jìn)入到桌面上,然后執(zhí)行scrapyd命令,服務(wù)就啟動了,如下圖:

6.png

在日志中,有個127.0.0.1:6800的連接,使用瀏覽器打開,有對應(yīng)的頁面,如下圖:

7.png

這就是正常的頁面了

嗯,沒錯,雖然丑,但也是他,就是他

好了,都正常了,那要怎么使用了?在這個界面上,有個curl http://localhost:6800/schedule.json -d project=default -d spider=somespider命令,沒錯,這就是驅(qū)使scrapyd工作的命令

挺崩潰的,雖然可以管理爬蟲,但是命令管理,難免讓人心煩.......有界面有按鈕的才是管理,這個是折磨

別急,界面管理,下次分享,這次先打基礎(chǔ),熟悉下而已

5. 學(xué)習(xí)使用命令部署爬蟲

在一切的開始前,我們需要先處理個東西,就是cfg文件,前面介紹過這是項目部署用的,現(xiàn)在在他里面改動一個內(nèi)容,如下:

8.png

去掉之后,這部署,才會有目標(biāo)地址

于此同時,scrapyd也需要打開,且url指定的地址,就可以訪問到scrapyd容器服務(wù)

然后在spbeen的項目目錄內(nèi),打開終端,輸入命令scrapyd-deploy --build-egg spbeen.egg 效果圖如下:

9.png

圖中有Server response(200)的字樣,說明爬蟲已經(jīng)部署上去了

那,要怎么看scrapyd的狀態(tài)呢?就那個丑的要死的界面,是沒辦法管理的

當(dāng)然是命令行控制了,再堅持一下,馬上就要學(xué)完了

6. 命令行調(diào)度

1、查看scrapyd目前的狀態(tài):

命令行:curl http://localhost:6800/daemonstatus.json

返回結(jié)果:{"node_name": "v-win10", "status": "ok", "pending": 0, "running": 0, "finished": 0}

2、列出Scrapyd中的項目

命令行:curl http://localhost:6800/listprojects.json

返回值:{"node_name": "v-win10", "status": "ok", "projects": ["spbeen"]}

3、查看項目中的爬蟲

命令行:curl http://localhost:6800/listspiders.json?project=spbeen

返回值:{"node_name": "v-win10", "status": "ok", "spiders": ["sp"]}

4、啟動爬蟲

命令行:curl http://localhost:6800/schedule.json -d project=spbeen -d spider=sp

返回值:{"node_name": "v-win10", "status": "ok", "jobid": "5514a540ad6811e98d0bd8c497f4e6f4"}

以上四個命令的配圖:


10.png

5、Scrapyd網(wǎng)頁界面的爬蟲執(zhí)行記錄和日志截圖

11.png

Scrapyd支持的命令行很多,貼個官方的API文檔鏈接:Scrapy官方連接


以上就是本篇文章的全部介紹內(nèi)容了


!放在最后

如果文章中有什么錯誤或者建議修改的地方,歡迎留言糾正和回復(fù)

如果你喜歡本篇文章,不妨關(guān)注一下我們的公眾號,每周更新兩篇原創(chuàng)技術(shù)文檔,都是干貨

wxgzh1.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 之前用scrapy爬取了知乎用戶數(shù)據(jù),由于數(shù)據(jù)量很大,便考慮采取分布式提升爬取效率,便有的此文。爬蟲源碼為http...
    最好時刻閱讀 2,171評論 0 0
  • scrapyd是一個用于部署和運(yùn)行scrapy爬蟲的程序,它允許你通過JSONAPI來部署爬蟲項目和控制爬蟲運(yùn)行 ...
    拾柒丶_8257閱讀 3,547評論 0 3
  • Scrapy爬蟲教程一 Windows下安裝Scrapy的方式和問題總結(jié) Scrapy爬蟲教程二 淺析最煩人的反爬...
    熊熊熊孩子閱讀 5,207評論 0 8
  • 最近調(diào)了一個非常喜歡的勾線畫筆,很簡單,出個小教程分享給大家。 step1 打開proceate 的筆刷,右上角添...
    小栗嶼閱讀 35,969評論 0 9
  • 記得愛奇藝還有vip,就隨手打開,點了一部名叫推銷員的伊朗電影來看。片頭是挖掘機(jī)強(qiáng)拆一座公寓的境頭,居民在恐慌中奔...
    貧僧法號鏟屎閱讀 530評論 0 0

友情鏈接更多精彩內(nèi)容