返回介绍

15.3 使用 Scrapyd 部署爬虫

发布于 2025-04-21 19:15:31 字数 2934 浏览 0 评论 0 收藏

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。