scrapyed = scrapy + deploying
把scrapy程序发布到线上的一套python服务
pip3 install scrapyd
# 开启服务
scrapyd
pip3 install scrapyd-client
该安装包拥有scrapyd-deploy 命令,是爬虫项目发布到srcapyd服务的关键步骤,使用的前提是
必须要开启scrapyd服务,也就是第一步a) 这一步window需要额外处理,linux不需要
[settings]
default = Demo.settings
[deploy:Demo] # 这边项目名字随便取
url = http://localhost:6800/ # 这个注释打开6800是后面访问端口,如要修改,scrapyd里面的也要记得一起修改
project = Demo
sudo find / -name default_scrapyd.conf # 首先知道这个配置文件路径
vim /your_path/default_scrapyd.conf # vim编辑配置文件
# 下面是编辑配置文件
[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 10 #可以不改 这个参数和CPU个数的乘积是爬虫同时运行的最多个数 为了以后方便改成10
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0 # 绑定的IP地址改成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
# TODO()首先进入scrapy项目文件夹下查看项目是否能正常启动
scrapy list # 如果有报错缺什么包 可以查看我的之前的博客
# 上一步正常 可以测试scrapyd 是否正常
scrapyd # 测试scrapyd开启 务必保证开启6800端口
# 这一步报错 可以在stackoverflow 上找答案,我之前博客也有相关的答错
假如此时访问 http://127.0.0.1/6800 出现scrapyd的页面则表示成功
后台运行scrapyd可以使用 supervisor 管理后台进程
# 部署项目, 一个scrapyd可以部署多个scrapy项目
scrapyd-deploy Demo(cfg:中的部署项目名) -p 爬虫项目名(cfg中的project名) # Demo是在scrapy配置文件里面设置的部署名称(假如没有则为default)
可以通过curl命令获取6800相关的api接口对爬虫进行远程操作,比如 开启爬虫,停止爬虫 等等,
curl http://ip地址:6800/schedule.json -d project=项目名 -d spider=爬虫名称
curl http://ip地址:6800/cancel.json -d project=项目名 -d job=232424434
curl http://ip地址:6800/delproject.json -d project=项目名
curl http://ip地址:6800/listprojects.json
以上可以看到通过curl命令就是获取接口命令的方法,可以使用scrapyd_api来快捷操作
原文:https://www.cnblogs.com/zhenyauntg/p/13272907.html