第十二章 scrapyd 部署爬虫

scrapyd 部署项目

标签(空格分隔): python scrapy scrapyd


  • 介绍:

Scrapyd用来部署运行爬虫。它提供了HTTPAPI的服务器,还能运行和监控Scrapy的爬虫。要部署爬虫到Scrapyd,需要使用到scrapyd-client部署工具集,下面演示下部署的步骤Scrapyd通常以守护进程daemon形式运行监听spider的请求,然后为每个spider创建一个进程执行scrapy crawl myspider,同时Scrapyd还能以多进程方式启动,通过配置max_proc和max_proc_per_cpu选项。

  • 安装 主机上:
pip install scrapyd  #在cmd界面下输入

选择盘符建立scrapyd的文件夹为存放打包上来的文件(.egg)

  • 配置

打开本机装入python的根文件夹,进入:\Lib\site-packages\scrapyd下,找到default_scrapyd.conf文件使用notep++打开更改配置信息:

[scrapyd]  
eggs_dir    = eggs  
logs_dir    = logs  
items_dir   =  
jobs_to_keep = 5  
dbs_dir     = dbs  
max_proc    = 0  
max_proc_per_cpu = 4  
finished_to_keep = 100  
poll_interval = 5  
bind_address = 0.0.0.0   #注意默认为127.0.0.1 为保证通过内网访问 改为0.0.0.0
http_port   = 6800  
debug       = off  
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  

除bind_address外其他均不变

  • 部署方法

在发布爬虫的机器上打开cmd输入:

pip install scrapyd-client #Scrapyd-client是scrapyd的一个客户端

scrapyd提供了

scrapyd-delpoy

命令上传我们所写的spider需要我们进入我们所建的爬虫文件修改scrapy.cfg文件内容。如:

[deploy:example]  #example为发布名称 
url = http://scrapyd.example.com/api/scrapyd #url为服务器上端口如:http://127.0.0.1:6800
project = yourproject  #为工程名称,发布爬虫时需要使用
#username = scrapy  
#password = secret  

更改了scrapy.cfg信息后,发布爬虫时,我们需要在cmd中cd 到我们所建立的爬虫项目下,如:ArticleSpider 。目的是执行scrapyd-deploy命令时,可检测到我们的scrapy.cfg文件

scrapyd-deploye -l example #可列出可运行的工程
scrapyd-deploye  -p  #发布爬虫

注意:(无法执行scrapyd-deploy时)
在python36\Scripts下新建文件scrapyd-deploy.bat然后写入以下内容: 
@echo off 
"E:\python36\python.exe" "E:\python36\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9

部署成功后我们可以看到提示:

{"status":"ok"}
  • 启动爬虫

首先我们需要下载Cmder软件用于执行curl命令。

打开Cmder,输入以下代码启动爬虫

curl http://localhost:6800/schedule.json -d project=market_spider -d spider=newsspider
# http://localhost:6800/ 可以改为服务器ip,如:
192.168.1.154:6800

(因为我们在scrapy.cfg文件中的url输入的为架设scrapyd的ip 所以我们在启动spider的时候应该输入相同的地址)
启动成功后我们可以得到:
{"status":"ok"}的提示
并且我们得到"jobid"我们需要记住后面的编码,用于以后结束爬虫。

curl http://127.0.0.1:6800/cancel.json -d project=myspider -d job=566dba0ccc0711e6b95c000c294834b5 

输入上方代码结束正在工作的爬虫,job后的码即为启动爬虫时产生的jobid

  • 查看爬虫的日志

在浏览器中输入Scrapyd的地址,即为部署Scrapyd的主机的ip加上端口。如:http://192.168.1.152:6800/ 然后点击job我们可以看见现在正在运行的爬虫以及完成后的爬虫。
点击log我们可以观看日志每一次运行爬虫都会产生,并且在本地创建的Scrapyd文件夹下logs文件夹中也会存储。观看日志信息我们可以看到如果爬虫运行错误的信息。

  • 注意:

1.将爬虫打包传递到服务器后,运行时,我们需要保证服务器的环境足够运行此项目的代码;
2.对于本机上的爬虫代码,我们可以使用本地的插件例如:chrome.exe 用于selenium进行爬取但代码打包上传时,代码没有改变,所以会有找不chrome的错误,我们需要对其做出一定的更改,上传新的代码版本;
3.更多scrapyd相关命令可访问下面网址:

http://scrapyd.readthedocs.io/en/latest/api.html

  • 原视频UP主慕课网(聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎)
  • 本篇博客撰写人: Python组学弟撰写 XiaoJinZi 上传 个人主页 转载请注明出处
  • 学生能力有限 附上邮箱: [email protected] 不足以及误处请大佬指责

你可能感兴趣的:(第十二章 scrapyd 部署爬虫)