官方地址:https://scrapyd.readthedocs.io/en/latest/install.html
注:首先确保以下的依赖包已经安装完毕(这里不说明下面包如何安装)
Python 2.6 or above
Twisted 8.0 or above
Scrapy 0.17 or above
linux的用apt-get安装,其他用 pip install scrapyd
安装即可。
注:这里补充一点,如果在linux下使用apt-get安装失败,也可以使用pip install安装,同时配合supervisor使用。要注意一点的是在supervisor的配置下运行scrapyd要写指令的绝对路径,比如: /usr/bin/scrapyd。
pip list
查看是否已经安装了scrapyd
scrapyd
指令看到如下图1 所示的提示,然后在浏览器访问 http://localhost:6800/,成功访问即可。
图1 scrapyd成功启动的图示
/etc/scrapyd/scrapyd.conf (Unix)
python安装目录下的 Lib\site-packages\scrapyd\default_scrapyd.conf (Windows) 这个并非官方说明的路径。
* 以下是几个比较重要的参数:
http_port 监听端口
bind_address 监听IP地址
max_proc 最大进程数(为0指开启等同于cpu的数目的进程)
max_proc_per_cpu 每个cpu开启的进程数,默认:4
debug 是否开启调试模式
eggs_dir 存储工程egg文件的目录
dbs_dir 存储工程数据库的目录
logs_dir 存储日志的目录(要关闭日志则让这个配置为空)
没错,安装并运行scrapyd就这么简单。
为什么要安装这个工具?
因为部署的应用需要打包成*.egg才能运行。
首先去官网地址:https://pypi.python.org/pypi/setuptools,下载 ez_setup.py
文件,然后在本地执行它,然后就会自动帮你下载并安装好的了。
提示安装成功之后再用pip list看看是否有setuptools即可。
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.org/en/latest/deploy.html
[settings]
default = market_spider.settings
[deploy:demo] # demo是指这个deploy的名称,自己命名,可以多个。(后面有用到)
url = http://localhost:6800/
username = demo # 新建的时候没有这个的,自己添加的
password = 123456 # 新建的时候没有这个的,自己添加的
project = market_spider # 工程的名称
图2 scrapyd-deploy部署失败图示
3.部署项目:
部署项目有两种方法:
第一种:通过addversion.json的请求部署,执行下面的请求指令就可以了,其中的参数根据实际工程修改。
curl http://localhost:6800/addversion.json -F project=myproject -F version=r23 -F [email protected]
第二种:通过scrapyd-deploy部署,要求装一个scrapyd-client,实际上就是借用工具执行第一种方式而已。
(1) 下载源码,把源码中的scrapyd-deploy拷贝到D:\python27\Scripts下
(2) 在D:\python27\Scripts下新建文件scrapyd-deploy.bat然后写入以下内容:
@echo off
"D:\python27\python.exe" "D:\python27\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9
在工程目录下执行部署指令,部署的指令格式为:scrapyd-deploy
* target就是配置文件的deploy的名称,针对上面的配置就是demo
* project如果不输就是配置文件中的project
本例部署的指令:scrapy-deploy demo
部署成功后会出现图3中的提示:
图3 部署工程成功
部署完成之后,在步骤1中所创建的python工程里可以看到多了一个eggs的文件夹,以及里面的一些内容,里面所存放的就是scrapyd-deploy的工程打包成.egg的文件,可以看到version就是文件的名称,每当我们执行一次scrapyd-deploy就会生成一个新的egg,示例如图4所示:
图4 部署完成后的文件夹
主要参考scrapyd官方文档的API部分,如下图5:
图5 scrapyd官方文档的API
在我的scrapy工程里有一个叫newsspider
的spider,现在就可以用API中的请求去调用或者执行爬虫了,这里以schedule.json为示例:
发送以下请求给scrapyd,让它帮我启动newsspider这个spider,详细的参数意义看文档最清楚,在这里不累赘。
curl http://localhost:6800/schedule.json -d project=market_spider -d spider=newsspider
运行的返回值如下图所示,返回ok表示成功,可以自主验证爬虫是不是运行了。
图6 运行spder成功
执行scrapyd-deploy和scrapyd都会产生一些文件夹以及相关的文件,包括生成egg的过程文件和日志文件等等。
本人对原理并未了解很透彻,请大神多多指教,另文章如有错漏请不吝告知!多谢!