【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

栏目: Python · 发布时间: 6年前

内容简介:当爬虫代码编写完毕后,你可以选择直接运行启动文件来启动爬虫,也可以将爬虫部署到 Scrapyd 后,通过 Scrapyd 的 API 来启动爬虫。那么如何将爬虫项目打包并部署到 Scrapyd 呢?笔者 将通过两个具体的部署例子(部署到本地以及部署到云服务器)以熟悉 Scrapy 爬虫项目打包、Scrapyd-client 的安装、使用以及爬虫项目部署过程。

当爬虫代码编写完毕后,你可以选择直接运行启动文件来启动爬虫,也可以将爬虫部署到 Scrapyd 后,通过 Scrapyd 的 API 来启动爬虫。

那么如何将爬虫项目打包并部署到 Scrapyd 呢?

笔者 将通过两个具体的部署例子(部署到本地以及部署到云服务器)以熟悉 Scrapy 爬虫项目打包、Scrapyd-client 的安装、使用以及爬虫项目部署过程。

爬虫项目打包

Scrapyd 打包部署的整个流程为:

【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

打包前期

当你使用 Scrapy 框架编写完爬虫代码之后,你需要将项目进行打包,才能够将其部署到 Scrapyd 上。官方文档对项目的打包有介绍:

Deploying your project involves eggifying it and uploading the egg to Scrapyd via the
addversion.json endpoint. You can do this manually, but the easiest way is to use the scrapyd-deploy tool provided by scrapyd-client which will do it all for you.
复制代码

Scrapy 项目需要使用 Scrapyd-client 工具 进行打包。

Scrapyd-client

它是 Scrapy 项目打包专用的客户端工具,同样是由 Scrapy 开发团队开发。使用 Scrapyd-client 将项目打包生成 .egg 文件。

Scrapyd-client 的安装

与 Scrapyd 一样,它也可以通过 pip 进行安装:

pip install scrapyd-client
复制代码
【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

打包前的项目配置

在打包前,我们需要对 Scrapy 项目进行设置。在 Scrapy 项目目录下,找到项目根目录的 .cfg 文件(通常是 scrapy.cfg )并用编辑器打开:

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = arts.settings

[deploy]
#url = http://localhost:6800/
project = arts

复制代码

配置文件分为 Settings 级和 Deploy 级。Settings 中指定了项目所用的配置文件,而 Deploy 中指定项目打包的设置。

  • URL - 指定部署的目标地址
  • Project - 指定打包的项目
  • Deploy - 指定项目别名

本小节,使用的项目为 arts ,Scrapyd 服务为本地服务即 localhost:6800 ,所以这里以此作为基础进行演示。

可以看到 .cfg 文件中 URL 处默认是有注释的,这里将注释去掉,并且为项目添加别名 locals

[settings]
default = arts.settings

[deploy:locals]
url = http://localhost:6800/
project = arts
复制代码
【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

打包部署

而后在 arts 项目的根目录( .cfg 同级目录)下使用命令(此时必须保证 Scrapyd 服务是正常运行的):

scrapyd-deploy locals -p arts
复制代码
【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

将项目打包并部署到指定的目标服务上,Scrapyd 服务会将请求结果以 json 格式返回:

node-name:arts$ scrapyd-deploy locals -p arts
Packing version 1538645094
Deploying to project "arts" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "node-name", "status": "ok", "project": "arts", "version": "1538645094", "spiders": 1}
复制代码

返回信息中包含了此次打包的版本号、目标服务地址、nodeName、项目状态、项目名称以及其中所包含的爬虫数量。并且在 Web 界面上也可以看到项目 arts 的名称,如下图所示:

【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

思考题

scrapy.cfg 文件中 Deploy 级设置里,Deploy 的名称是必须设置的吗?如果不设置会怎么样?可以有多个 Deploy 级配置吗?

我们可以通过动手实验,来验证这些问题。

若 Deploy 不设置名称

【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

可以看到,Deploy 级配置不设置名称的话,在命令行中也无需使用名称,同样可以完成项目的打包。

若多个 Deploy 配置

笔者在 192.168.0.61 服务器启动了 Scrapyd,并且在 scrapy.cfg 文件中设置两组 Deploy 级别配置,其中一个 Deploy 不设置名称且 URL 指向本地 Scrapyd;另一个 Deploy 设置名称为 servers 且 URL 指向服务器的 Scrapyd。 cfg 代码为:

[settings]
default = arts.settings

[deploy]
url = http://localhost:6800/
project = arts

[deploy:servers]
url = http://192.168.0.61:6800/
project = arts
复制代码
【动图演示】笑眯眯地教你如何将 Scrapy 项目及爬虫打包部署到服务器

可以看到,多个 Deploy 级别的配置是允许的,并且我们可以使用 Deploy 的名称来区分它们。

小结

通过 Scrapy 项目的部署案例,我们学会了 Scrapyd-client 的安装、使用以及打包前 .cfg 配置文件的相关配置,并且成功的将一个 Scrapy 项目打包部署到目标服务器上。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

架构真经

架构真经

马丁L. 阿伯特(Martin L. Abbott)、迈克尔T.费舍尔(Michael T. Fisher) / 机械工业出版社 / 2017-4 / 79

前言 感谢你对本书第2版感兴趣!作为一本入门、进修和轻量级的参考手册,本书旨在帮助工程师、架构师和管理者研发及维护可扩展的互联网产品。本书给出了一系列规则,每个规则围绕着不同的主题展开讨论。大部分的规则聚焦在技术上,少数规则涉及一些关键的思维或流程问题,每个规则对构建可扩展的产品都是至关重要的。这些规则在深度和焦点上都有所不同。有些规则是高级的,例如定义一个可以应用于几乎任何可扩展性问题的模......一起来看看 《架构真经》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器