框架式爬虫部署 Scrapy爬虫框架部署教程

鳄鱼君

发表文章数:591

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » 框架式爬虫部署 Scrapy爬虫框架部署教程

框架式爬虫是指使用Scrapy框架、PySpider框架等开发的爬虫程序。对于这种爬虫的部署,需要通过特定的工具,这里以常用的Scrapy框架为例,部署工具主要使用的是ScrapydGerapy

Scrapyd部署爬虫

Scrapyd是专门用于管理Scrapy爬虫的部署和运行的服务,它是通过API接口来部署控制Scrapy项目,可以管理多个项目,并且每个项目还可以上传多个版本,但是只有最新版本会被使用。Scrapyd免费开源,GitHub:https://github.com/scrapy/scrapyd

使用Scrapyd之前,需要在Python的开发环境下安装Scrapyd和Scrapyd-Client模块,安装方式可以使用pip指令完成:

pip install scrapyd scrapyd-client -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

这就是光速的感觉!!

在使用Scrapyd管理Scrapy项目之前,还要对Scrapy项目进行打包处理,打包过程可以选择Scrapyd-Client模块实现或者使用Scrapyd的API接口。随便一个编写一个Scrapy项目,然后使用Scrapyd-Client模块实现项目打包。

Scrapyd-Client模块安装成功后,还需要在Python安装目录的Scripts文件夹(scrapyd-deploy同级目录下)创建脚本文件,脚本文件命名为scrapyd-deploy.bat

框架式爬虫部署 Scrapy爬虫框架部署教程
作用是通过Python指令运行Scripts文件夹的scrapyd-deploy文件,由该文件去执行项目打包过程,代码如下:

@echo off
"F:\scratches\venv\Scripts\python.exe" "F:\scratches\venv\Scripts\scrapyd-deploy"

先创建txt文件,编辑后另存为bat文件

上述代码的“python.exe”是Python安装目录下的Python解释器;“scrapyd-deploy”是Scripts文件夹的scrapyd-deploy文件。这里要根据实际开发环境进行配置,如果不编写脚本文件,则在CMD窗口下无法使用指令打包Scrapy项目。

脚本文件创建后,下一步是修改项目文件scrapy.cfg的配置内容,配置属性url代表Scrapyd的IP地址。假如在一个局域网内,有多台计算机需要部署不同的Scrapy项目,而且每台计算机都会装上Scrapyd服务,那么配置属性url是把当前项目部署到指定的Scrapyd。配置内容如下:

[settings]
default = eyujun.settings

#一个项目配置单一主机
[deploy]
url = http://localhost:6800/
project = eyujun

#一个项目配置多台主机
[deploy:eyujun1]
url = http://123.1.1.1:6800/
project = eyujun1


[deploy:eyujun2]
url = http://123.1.1.1:6800/
project = eyujun2

如果一个项目只部署在一台计算机上,只需定义一个deploy属性即可;如果一个项目部署在多台计算机上,那么可以定义多个deploy属性,并在deploy属性后添加冒号和名称,列如deploy:eyujun1.

然后执行打包过程。在F盘创建文件夹deployScrapy,打开CMD窗口并且还到deploySpider路径,输入指令scrapyd,开启Scrapyd服务:

框架式爬虫部署 Scrapy爬虫框架部署教程

Scrapyd服务开启后,再次打开一个新的CMD窗口,将路径切换到项目eyujun,也就是scrapy.cfg所在的路径。如果项目只部署在一台主机商,打包指令为scrapyd-deploy;如果项目部署在多台主机商,就要多次输入打包指令,例如deploy属性设置的为eyujun1和eyujun2,输入两次打包指令scrapyd-deploy eyujun1 和scrapyd-deploy eyujun2.由于deploy属性为eyujun2的url属性是不存在的IP地址,所以打包过程会出现无法连接的错误信息。

scrapy.cfg文件不要出现中文注释!!

项目打包成功之后,会在deployScrapy文件夹下生产对应的文件,有三个文件夹:

  1. dbs:为已部署的Scrapy项目生成相应的数据库文件,Scrapyd每部署一个项目都会生成一个文件。
  2. eggs:Scrapy项目的版本信息,如果多次打包同一个项目,则会生成多个版本信息,每次Scrapyd运行项目都会选择最新版本。
  3. logs:记录Scrapy项目的运行信息,每次Scrapyd运行项目都会生成一个txt文件,记录项目的运行情况。

调用Scrapyd的API接口来运行Scrapy项目,必须保证已开启Scrapyd服务并且Scrapy项目已做打包处理。调用API接口可以使用Requests模块,实现过程与编写爬虫是同一个原理。运行Scrapy爬虫和删除爬虫:

imports
# 运行Scrapyd的Scrapy
url="http://localhost:6800/schedule.json"
data={
    # 参数project是scrapy.cfg的属性project
    'project':'eyujun',
    # 参数spider是项目spider的name属性
    'spider':'eyujunSpider'
}
res=requests.post(url,data=data)
print(res.json())

# 删除Scrapyd的Scrapy
url="http://localhost:6800/delproject.json"
data={
    # 参数project是scrapy.cfg的属性project
    'project':'eyujun',
}
res=requests.post(url,data=data)
print(res.json())

调用Scrapyd的API接口只需对请求地址发送指定的HTTP请求以及设置指定的请求参数即可,Scrapyd的官方文档已对每个API接口做了详细介绍,可自行查看。

项目部署成功后,如果要对项目的功能进行修改,每次修改后都要重新打包项目,在Scrapyd的eggs文件夹里生成最新的版本信息,否则Scrapyd运行项目的时候,项目还是会以修改前的方式运行。

Scrapyd的配置信息,在模块包下找到default_scrapyd.conf文件(Lib\site-packages\scrapyd\default_scrapyd.conf)

Scrapyd管理和部署Scrapy项目的操作方法如下:
(1)创建脚本文件scrapyd-deploy.bat,通过bat脚本运行scrapyd-deploy文件,实现项目打包处理。
(2)修改Scrapy项目文件scrapy.cfg的配置内容,根据部署方式配置属性url和project。
(3)新建CMD窗口,将窗口路径切换到某个文件夹,输入Scrapyd服务开启指令scrapyd。
(4)再次新建CMD窗口,将窗口路径切换到项目所在的文件夹,根据部署方式输入相应的打包指令,把项目打包到Scrapyd服务里。
(5)使用Requests模块调用Scrapyd的API接口,在Scrapyd服务里实现Scrapy项目的调度和管理。

Gerapy爬虫管理框架

Gerapy是一款分布式爬虫管理框架,它在Scrapyd和Scrapyd-Client的基础上进行封装,让Scrapy项目管理实现可视化操作。简单来说,Gerapy是一个使用Django开发的管理系统,它可以部署和管理Scrapy项目。

pip install Gerapy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

安装Gerapy会卸载原有的一些模块,重新安装。然后再F盘创建文件夹myGerapy,打开CMD窗口并切换到myGerapy所在路径,输入指令gerapy,CMD窗口就会显示Gerapy框架的管理指令:

  1. gerapy init:初始化Gerapy系统,创建一个新的Gerapy系统,用于部署和管理Scrapy项目。
  2. gerapy migrate:对Gerapy系统的数据库进行初始化,在数据库里建立相关的数据表。
  3. gerapy createsuperuser:在Gerapy系统创建超级管理员。
  4. gerapy runserver:运行Gerapy系统。

我们使用gerapy init指令初始化Gerapy系统,此时会在当前目录下生成gerapy文件夹。

Gerapy系统创建后,下一步是对系统的数据库进行初始化。将CMD窗口的路径切换到文件夹gerapy输入gerapy migrate,在CMD窗口可以看到数据表的创建信息,并且在文件夹gerapy里生成一下几个文件夹:

框架式爬虫部署 Scrapy爬虫框架部署教程

数据库文件,日志文件,工程文件,具体自己尝试。接下来就可以运行Gerapy系统,在CMD窗口(gerapy系统目录下)输入gerapy runserver即可!

系统运行后,在浏览器访问控制台输出的URL: http://127.0.0.1:8000/。鳄鱼君Ba使用的gerapy版本为0.9.2,需要用户登录,这里我们可以创建个超级用户:

gerapy createsuperuser # 之后输入用户名和密码(英文+数字) email直接回车

然后登录就可以看到下图的系统首页:

框架式爬虫部署 Scrapy爬虫框架部署教程

首页的右侧是显示当前系统所记录的主机和项目信息,这是一个简单的统计功能;而在首页的左侧分为主机管理、项目管理和任务管理,这是管理系统的主机、项目、任务。

主机管理是在系统里添加Scrapyd服务,比如现有多台主机并且每台主机已安装Scrapyd服务,为了统一管理这些主机,可以在Gerapy系统里添加主机信息,实现所有Scrapyd服务的调度和管理。在主机管理页面里,单击创建按钮即可添加主机信息。

在主机创建页面里,分别输入主机的名称、IP和端口即可。主机名称可以自行命名;IP是指Scrapyd服务所在主机的IP地址;端口是指Scrapyd服务所占用的端口,一般默认值为6800。以本地的Scrapyd服务为例:

框架式爬虫部署 Scrapy爬虫框架部署教程

单击“创建”按钮后,Gerapy系统会将相关信息保存到数据库文件db.sqlite3中。返回到主机管理页面,可以看到刚创建的主机显示在主机管理页面,主机状态显示为错误,这说明当前主机尚未开启Scrapyd服务。当我们在本地开启Scrapyd服务,并且刷新主机管理页面后,主机状态显示为正常:

框架式爬虫部署 Scrapy爬虫框架部署教程

下一步在项目管理中创建项目信息,使Scrapy项目与主机管理的Scrapyd服务相互结合,实现Scrapy项目部署。在Gerapy系统所在文件夹gerapy的projects文件夹里放置项目eyujun,项目eyujun无需做打包处理,因为Gerapy系统已提供项目打包功能。放置项目eyujun后,再次刷新:

框架式爬虫部署 Scrapy爬虫框架部署教程

从项目管理页面看到,项目eyujun的打包和可配置都处于一个尚未激活状态。我们单击“部署”按钮,进入项目部署页面,输入描述内容并单击“打包”按钮即可完成项目打包处理:

框架式爬虫部署 Scrapy爬虫框架部署教程

项目打包成功后,单击右上角的“部署”按钮即可将项目eyujun部署到名为【本地项目】的Scrapyd服务。如果主机管理多个Scrapyd服务,在项目部署页面也会显示相应的Scrapyd服务,这样可将一个项目部署到多台主机,这里不再介绍!

如果项目eyujun的功能发生修改,需要在项目部署页面将项目重新打包处理,并且还要重新部署到相应的Scrapyd服务。

项目打包和部署已执行完毕,最后在Gerapy系统上运行项目。单击主机管理,进入主机管理页面并单击名为【本地项目】的调度按钮:

在Scrapyd服务页面里,隶属于当前Scrapyd服务的所有Scrapy项目都以列表的形式呈现。当运行项目eyujun的Spider程序时,页面就会生成程序的运行状态和运行信息:

Gerapy系统还可以对主机和项目进行编辑和删除操作,都比较简单,可以自己摸索!鳄鱼君Ba在使用的时候遇到了一个问题,在运行gerapy命令的时候报错:ModuleNotFoundError: No module named ‘scrapy.settings.deprecated’,删掉这个之后可以使用gerapy,但是不能够自动打包,具体原因不清,也没有解决!

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《框架式爬虫部署 Scrapy爬虫框架部署教程》 发布于2020-06-29

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

4 + 8 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册