天天看点

使用Scrapyd部署爬虫

使用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查看日志信息。

使用Scrapyd部署爬虫

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部署爬虫

6.命令行进入到某个爬虫项目目录,执行命令:

>scrapyd-deploy
           

#####报错问题

>scrapyd-deploy
'scrapyd-deploy' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
           
使用Scrapyd部署爬虫

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

使用Scrapyd部署爬虫

6.4若提示部署status状态是OK,说明爬虫部署成功。如果想启动爬虫,可以输入:

project后面是项目名称,spider后面是爬虫名称

>curl http://localhost:6800/schedule.json -d project=lianjia01 -d spider=lianjia
           
使用Scrapyd部署爬虫

7.在浏览器打开:http://localhost:6800/,查看爬虫运行情况。

使用Scrapyd部署爬虫

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获得

注意:在使用远程部署的时候,要注意安全问题

链家经纪人爬取源码