爬蟲(十八):scrapy分佈式部署

scrapy部署神器-scrapyd --》GitHub地址  --》官方文檔python

 

一:安裝scrapydlinux

安裝:pip3 install scrapydgit

這裏我在另一臺ubuntu linux虛擬機中一樣安裝scrapy以及scrapyd等包,保證所要運行的爬蟲須要的包都完成安裝.github

在這裏有個小問題須要注意,默認scrapyd啓動是經過scrapyd就能夠直接啓動,這裏bind綁定的ip地址是127.0.0.1端口是:6800,這裏爲了其餘虛擬機訪問講ip地址設置爲0.0.0.0
修改scrapyd的配置文件:sudo vim /usr/local/lib/python3.5/dist-packages/scrapyd/default_scrapyd.confjson

 

這樣配置好以後就能夠在windows下訪問了ubuntu

 二:關於部署vim

經過scrapyd-client進行部署操做:--》官方文檔windows

這裏的scrapyd-client主要實現如下內容:api

  1. 把咱們本地代碼打包生成egg文件
  2. 根據咱們配置的url上傳到遠程服務器上

咱們將咱們本地的scrapy項目中scrapy.cfg配置文件進行配置:服務器

咱們其實還能夠設置用戶名和密碼,不過這裏沒什麼必要,只設置了url
這裏設置url必定要注意:url = http://192.168.27.128:6800/addversion.json
最後的addversion.json不能少

咱們在本地安裝pip3 install scrapyd_client,安裝完成後執行:scrapyd-deploy(我是在git下執行的) 先從github下載項目

看到status:200表示已經成功看到status:200表示已經成功

 三:經常使用API

listprojects.json列出上傳的項目列表

listversions.json列出有某個上傳項目的版本

schedule.json遠程任務的啓動

下面咱們啓動的三次就表示咱們啓動了三個任務,也就是三個調度任務來運行zhihu這個爬蟲

 啓動後就能夠在界面中看到啓動的任務了:

也能夠看到日誌:

MongoDB中存入了剛纔爬取的數據。

listjobs.json列出全部的jobs任務
上面是經過頁面顯示全部的任務,這裏是經過命令獲取結果

cancel.json取消全部運行的任務
這裏能夠將上面啓動的全部jobs均可以取消:

這樣當咱們再次經過頁面查看,就能夠看到全部的任務都是finshed狀態:

我相信看了上面這幾個方法你必定會以爲真不方便還須要輸入那麼長,因此有人替你幹了件好事把這些API進行的再次封裝:

--》GitHub地址

四:關於python-scrapyd-api

該模塊可讓咱們直接在python代碼中進行上述那些api的操做
首先先安裝該模塊:pip install python-scrapyd-api 
使用方法以下,這裏只演示了簡單的例子,其餘方法其實使用很簡單按照規則寫就行:

複製代碼
from scrapyd_api import ScrapydAPI


scrapyd = ScrapydAPI('http://192.168.1.9:6800')
res = scrapyd.list_projects()
res2 = scrapyd.list_jobs('zhihu_user')
print(res)
print(res2)
複製代碼

Cancel a scheduled job
scrapyd.cancel('project_name', '14a6599ef67111e38a0e080027880ca6')

Delete a project and all sibling versions
scrapyd.delete_project('project_name')

Delete a version of a project
scrapyd.delete_version('project_name', 'version_name')

Request status of a job
scrapyd.job_status('project_name', '14a6599ef67111e38a0e080027880ca6')

List all jobs registered
scrapyd.list_jobs('project_name')

List all projects registered
scrapyd.list_projects()

List all spiders available to a given project
scrapyd.list_spiders('project_name')

List all versions registered to a given project
scrapyd.list_versions('project_name')

Schedule a job to run with a specific spider
scrapyd.schedule('project_name', 'spider_name')

Schedule a job to run while passing override settings
settings = {'DOWNLOAD_DELAY': 2}

Schedule a job to run while passing extra attributes to spider initialisationscrapyd.schedule('project_name', 'spider_name', extra_attribute='value')

相關文章
相關標籤/搜索