使用Scrapyd部署爬虫
Scrapyd:
一个部署和运行Scrapy爬虫的应用程序,它使用户能在网页查看正在执行的任务,能通过JSON API部署(上传)工程和控制工程中的爬虫,如新建爬虫任务、终止爬虫任务等。
1.要使用Scrapyd部署,需要安装Scrapyd
pip install scrapyd
2.运行Scrapyd
>scrapyd
默认情况下,Scrapyd监听0.0.0.0:6800端口,用浏览器开:http://localhost:6800/,就能看到Scrapyd已经成功运行。单机页面的Jobs查看已经部署的爬虫,单击Logs查看日志信息。
3.将代码上传并部署到Scrapyd,需要使用一个专门的打包上传工具scrapyd-client
>pip install scrapyd-client
4.将本地Scrapy项目中的scrapy.cfg配置文件进行配置
[settings]
default = lianjia01.settings
[deploy]
url = http://localhost:6800/
project = lianjia01
5.scrapyd-client为用户提供了scrapyd-deploy命令,用来打包和上传爬虫代码。
Windows下,使用此命令,可能会出现:“‘scrapyd-deploy’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的提示。在Python的scripts目录,能发现一个scrapy-deploy的文件,但也无法执行。解决办法
进入Python的scripts目录,创建scrapy.bat、scrapyd-deploy.bat两个文件。
5.1编辑scrapy.bat:
@echo off
C:\ProgramData\Anaconda3\python C:\ProgramData\Anaconda3\Scripts\scrapy %*
5.2编辑scrapyd-deploy.bat:
@echo off
C:\ProgramData\Anaconda3\python C:\ProgramData\Anaconda3\Scripts\scrapy-deploy %*
>scrapyd-deploy
#####报错问题
>scrapyd-deploy
'scrapyd-deploy' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
6.1原因
scrapyd和scrapyd-client版本不兼容!
直接pip安装的scrapyd版本为1.2.0,scrapyd-client版本为:1.1.0
6.2解决(或第5步)
安装一个版本和scrapyd相适应的scrapyd-client
pip install scrapyd-client==1.2.0a1
6.3再次执行>scrapyd-deploy
6.4若提示部署status状态是OK,说明爬虫部署成功。如果想启动爬虫,可以输入:
project后面是项目名称,spider后面是爬虫名称
>curl http://localhost:6800/schedule.json -d project=lianjia01 -d spider=lianjia
7.在浏览器打开:http://localhost:6800/,查看爬虫运行情况。
8.如果代码发生改变,可以重新打包部署,Scrapyd默认执行最新的版本
9.如果要部署到远程服务器,Scrapy项目中scrapy.cfg文件的URL需要配置为远程服务器的地址
10.Scrapyd还提供了很多方便的命令,如停止一个爬虫的命令为
>curl http://localhost:6800/cancel.json -d project=lianjia01 -d job=JOB_ID
JOB_ID从web控制台PID获得
注意:在使用远程部署的时候,要注意安全问题
链家经纪人爬取源码