15.3 使用 Scrapyd 部署爬虫
15.3.1 Scrapyd 简介和安装
按照一般的部署方法,部署分布式爬虫需要每个服务器复制代码、用命令行运行,非常繁杂,管理起来也非常不方便,如爬虫版本更新,可能需要所有服务器进行具体代码的更新。另外,用户也不能方便地查看各个爬虫的运行情况。
Scrapyd 部署就解决了上述问题。Scrapyd 是一个部署和运行 Scrapy 爬虫的应用程序,它使用户能够在网页端查看正在执行的任务,能够通过 JSON API 部署(上传)工程和控制工程中的爬虫,如新建爬虫任务、终止爬虫任务等,功能比较强大。
要使用 Scrapyd 部署,首先要安装 Scrapyd,这里使用 pip 安装。
>pip install scrapyd
安装完成后可直接在命令行里执行 scrapyd 命令,将 Scrapyd 运行起来,如图 15-5 所示。
图 15-5 运行 Scrapyd
默认情况下,Scrapyd 监听 0.0.0.0:6800 端口,用浏览器打开 http://localhost:6800/,能看到 Scrapyd 已经成功运行,如图 15-6 所示。可以单击页面中的“Jobs”查看已经部署的爬虫,单击“Logs”查看日志信息。
图 15-6 在浏览器中查看 Scrapyd 的运行情况
15.3.2 使用 scrapyd-client 部署爬虫
要将代码上传并部署到 Scrapyd,还需要使用一个专门的打包上传工具 scrapydclient,还是使用 pip 安装。
>pip install scrapyd-client
scrapyd-client 为用户提供了 scrapyd-deploy 命令,用来打包和上传爬虫代码,但如果使用的是 Windows 系统,安装完后,在命令行中运行部署命令 scrapyd-deploy,可能会出现“scrapyd-deploy 不是内部或外部命令,也不是可运行的程序或批处理文件”的提示。
遇到这个问题,打开 Python 目录下的 Scripts 目录,能找到一个 scrapy-deploy 的文件,但是无法运行。下面简单介绍解决办法。
(1)进到 Python 安装目录下的 Scripts 目录下,创建 scrapy.bat、scrapyddeploy.bat 两个新文件。
(2)编辑这两个文件。
在 scrapy.bat 文件中输入以下内容。
@echo off D:\Python36\python D:\Python36\Scripts\scrapy %*
在 scrapyd-deploy.bat 文件中输入以下内容。
@echo off D:\Python36\python D:\Python36\Scripts\scrapyd-deploy %*
注意:上面的路径要替换成自己的 Python 安装路径。
(3)保存退出,并确保 D:\python 和 D:\python\Scripts 都在环境变量里。这样就可以正常运行 scrapy-deploy 命令了。
在使用 scrapy-deploy 命令打包上传之前,先将本地 Scrapy 项目中的 scrapy.cfg 配置文件(见图 15-7)进行配置。
图 15-7 scrapy.cfg 配置文件
因为仅仅演示部署到本地计算机,这里只要把 URL 前面的#去掉就可以。然后把命令行目录定位到爬虫项目目录,执行 scrapyd-deploy 命令。
如果一切顺利,系统会给出图 15-8 所示的提示。
图 15-8 使用 scrapyd-deploy 部署爬虫
图中提示的部署 status 状态是 ok,说明爬虫部署成功。如果想启动爬虫,可输入如下命令。
>curl http://localhost:6800/schedule.json -d project=pachong3 -d spider=fang
这里 project 后面是项目名称,spider 后面是爬虫名称。执行启动上面命令后,可以在浏览器中打开 http://localhost:6800/,查看爬虫运行情况。例如单击 Jobs,查看爬虫的部署情况,如图 15-9 所示。如果代码发生改变,可以重新打包部署,Scrapyd 默认执行最新的版本。
图 15-9 查看爬虫的运行情况
如果要部署到远程服务器,Scrapy 项目中 scrapy.cfg 文件的 URL 需要配置为远程服务器的地址。远程部署要注意安全问题。
Scrapyd 还为用户提供了很多非常方便的命令,如执行如下命令可停止一个爬虫。
>curl http://localhost:6800/cancel.json -d project=PROJECT_NAME -d job=JOB_ID
命令中的 JOB_ID 可以很方便地从 Web 控制台 PID 获得。读者可以查看 Scrapyd 官方文档,了解详细的 API。
最后还是要提醒读者,Scrapyd 能极大地简化部署 Scrapy 爬虫的步骤,但是在使用远程部署的时候,一定要注意安全问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论