下载代码
git clone -b ArticleSpider-elasticsearch https://github.com/mtianyan/Art icleSpider.git
这里我下载到了desktop目录。
介绍
- scrapyd是一个service用来运行我们的spider实例
- 通过http json 控制spider
安装
安装到虚拟环境之下:
我们之前运行爬虫的虚拟环境
workon articlespider3
scrapyd
mark
这时访问浏览器的6800端口没有错误。
mark mark看到我现在的目录在桌面
scrapyd是一个服务器。
我们部署需要两个东西,一个是scrapyd 一个是scrapy client
client打包发送到server
对应的虚拟环境要能好好运行。scrapyd部署到服务器。
模拟客户端
打开一个新窗口
不用进入我们原先的虚拟环境。
pip install scrapyd-client
mark
安装完成后cd到我们的项目目录。
mark前往配置我们的scrapy.cfg
mark名称需要自己记住。如我的mtianyan
找到自己当前窗口对应系统环境的scrapyd-deploy文件
可以直接scrapyd-deploy命令,但是这个是提供给unix用户的。
windows用户专属
在当前目录创建文件scrapyd-deploy.bat
@echo off
"D:\softEnvDown\Anaconda2\envs\py3\python.exe" "D:\softEnvDown\Anaconda2\envs\py3\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
mark
首先找到虚拟环境下的python.exe路径
mark找到scrapyd-deploy路径。
mark可以看到此时scrapyd-deploy可用
mark-l 查看已经启动的scrapyd服务。
窗口一也就是原来运行我们项目虚拟环境的那个。
markcd进项目目录
scrapy list
确保可以查看到我们的spider项目。
开始部署
-p 要和配置文件中保持一致
markscrapyd-deploy mtianyan -p ArticleSpider
这是因为我们刚才想检查scrapy list把服务关了
mark mark开启服务后重新运行
mark打包上传成功。
前往验证项目上传完成
mark mark可以看到我运行scrapyd的目录中已经有eggs 和 dbs
markeggs中又有我们的scrapy项目
mark开始运行我们的scrapy项目
curl http://localhost:6800/daemonstatus.json
mark
查看当前运行状态
curl http://localhost:6800/schedule.json -d project=ArticleSpider -d spider=jobbole
mark
mark
可以看到运行成功。
本地运行可以打包报错_job(我github代码已经解决了这个错误)
jobbole.py中
def __init__(self, **kwargs):
添加参数 **kwargs
上传了错误的项目如何删除
curl http://localhost:6800/delproject.json -d project=ArticleSpider
浏览器中finish字段为空表示无异常
log 就是调试时的log
取消spider任务
curl http://localhost:6800/cancel.json -d project=ArticleSpider -d job=2a9b218a13e011e888cb28d2449bc99e
mark
jobid就是刚才启动时返回的那个。
mark mark可以看到已经停止finish了。
看到有几个project,spider
curl http://localhost:6800/listprojects.json
查看有几个spider
curl http://localhost:6800/listspiders.json?project=ArticleSpider
job是另一个概念,查看jobs
一个爬虫运行多次是多个job
curl http://localhost:6800/listjobs.json?project=ArticleSpider | python -m json.tool
mark
网友评论
你有没有遇到No module named 'execjs' 这样的错误,
我虚拟环境里面有这个模块,退出虚拟环境 是没有这个模块的
具体做法:我可以爬取两种不同类型的网站,一种是谷歌图片和百度图片,另一种是知乎和简书上的图片,针对这4个网站设计不同的算法,然后再串起来运行。总共爬取4个网站的图片分类保存到本地,这种设计思路可以吗?