前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy入门到放弃07:爬虫的远程启停、监控

Scrapy入门到放弃07:爬虫的远程启停、监控

作者头像
叫我阿柒啊
发布2022-05-09 21:02:16
8880
发布2022-05-09 21:02:16
举报

前言

上一篇的枯燥无味,这一篇来还。写到插件篇了,终于能写点有意思的东西了,接下来就基本用法和插件篇来穿插着写一写。

在我们以往开发的爬虫中,不论是Java的Jsoup,还是Python的requests,启动方式和普通的程序没什么两样,都是本地运行。为了提供远程启停爬虫,Scrapyd基于http协议开放了API,以此来远程启停爬虫。

而第三方插件Gerapy作为一个分布式爬虫管理框架,基于Scrapyd又封装了一个web应用,在网页上就可以启停爬虫程序,监控程序日志。

Scrapyd

1.安装

命令两行,快速安装。

代码语言:javascript
复制
python install scrapyd
python install scrapyd-client

2. scrapyd配置

在python的site-packages/scrapyd安装目录下,有一个default-scrapyd.conf,里面是scrapyd一些默认配置,我们可以修改一些默认配置。

scrapyd配置

这里其实修改的地方不多,主要修改ip和端口。

代码语言:javascript
复制
bind_address:默认是本地127.0.0.1,修改为0.0.0.0,可以让外网访问
http_port:服务端口,默认是6800

3.项目配置

在每个Scrapy项目下,都有一个scrapy.cfg,添加以下配置。

代码语言:javascript
复制
[deploy:video]
url = http://localhost:6800/
# 这个project名称你随便起
project = VideoSpider

其中要注意以下两点:

  1. video为deploy的别名,冒号之间千万不要有空格,别问,问就是加空格是我的编码风格
  2. url端口要与scprayd.conf中一致

4. 启动服务

在主机上新建一个目录,执行scrapyd,这里注意,一定要新建目录,因为目录中会生成一些数据文件。

如果是linxu环境,记得要创建软链接。

代码语言:javascript
复制
ln -s /usr/local/python3.9/bin/scrapyd /usr/local/bin/scrapyd
ln -s /usr/local/python3.9/bin/scrapyd-client /usr/local/bin/scrapyd-client
ln -s /usr/local/python3.9/bin/scrapyd-deploy /usr/local/bin/scrapyd-deploy

5.部署服务

我们需要进入到scrapy项目的目录下,执行deploy命令。将项目中的爬虫部署到scrapyd服务上去。

代码语言:javascript
复制
 scrapyd-deploy video -p VideoSpider

响应结果如下,表示部署成功。

同时,scrapyd-deploy -l可以查看部署了哪些项目。

6.API

前面也说了,scrapyd是一个通过API来操作爬虫的服务框架。这里先列举以下基本的API。

代码语言:javascript
复制
1. http://localhost:6800/daemonstatus.json:查看集群负载,返回{ status, running, pending,finished, node_name }的json

2. http://localhost:6800/schedule.json -d project=myproject -d spider=SpiderName [ -d setting = DOWNLOAD_DELAY = 2 -d arg1 = val1]:运行爬虫,

3. http://localhost:6800/cancel.json -d project=myproject -d job=jobid:停止爬虫

4. http://localhost:6800/listjobs.json | listspiders.json?project=myproject:查看项目的任务|爬虫列表

5. curl http://localhost:6800/delproject.json -d project=myproject:删除项目

操作截图如下:

API

这里要注意的是,里面的myproject要换成自己的项目名称,这里我需要换成VideoSpider。

这样的API的操作方式,对于很多人来说太不友好了,所以为了解决这个问题,Gerapy基于scrapyd的基础上,提供了界面化的操作方式。

Gerapy

前提:scrapyd服务启动,项目已经部署到scrapyd中

1. 安装

命令一行,极速安装。

代码语言:javascript
复制
pip install gerapy

2. 服务初始化

执行以下命令完成安装、初始化、用户创建。

安装
代码语言:javascript
复制
pip install gerapy
初始化

新建一个目录,执行以下命令,此目录会作为gerapy的工作目录。

代码语言:javascript
复制
gerapy init

在当前目录下会生成一个gerapy文件夹。

创建数据库

进入gerapy文件夹,执行以下命令,在gerapy目录下生成一个sqlite数据库,同时创建数据表。

代码语言:javascript
复制
gerapy migrate

这里的sqlite是一个嵌入式数据库,在后面也会用到另一个嵌入式数据库BerkeleyDB。在linux环境下,如果sqlite版本过低,执行此操作会报错,这时候需要安装高版本的sqlite。

安装这里详细步骤就不写了,留给大家一点发挥空间。

用户创建

执行以下命令,来创建管理用户。

代码语言:javascript
复制
gerapy createsuperuser

执行此命令后,会提示我们输入用户名、邮箱、密码等。所有操作如下图:

操作

3.启动gerapy

在gerapy工作目录下,执行以下命令启动服务:

前台方式运行
代码语言:javascript
复制
gerapy runserver 0.0.0.0:8888
后台方式运行
代码语言:javascript
复制
gerapy runserver 0.0.0.0:8888 > /dev/null 2>&1 &

这里强调两点:

  1. 如果想被外网访问,启动的时候就要加0.0.0.0
  2. 默认端口是8000,我这里修改为了8888
  3. 测试采用前台方式运行,生产采用后台方式运行

访问8888端口,进入登录页面。

输入用户名、密码登录进入到主机管理菜单下。

4.菜单介绍

主机管理

主机管理主要是对部署在scrapyd服务上的爬虫进行界面化管理操作。

点击右上角的创建按钮,添加scrapyd服务的IP和端口,点击保存,结果如下图。

状态正常之后,点击调度按钮,进入scrapy项目爬虫列表。

爬虫列表

点击爬虫程序后面的运行按钮,即可运行爬虫。

项目管理

Gerapy的工作目录下有一个空的projects文件夹,也就是存放Scrapy目录的文件夹。要部署一个 Scrapy 项目,也可以不通过scrapyd,只要项目文件放在projects文件夹中即可。

方式主要有以下三种:

  1. 将本地 Scrapy 项目直接移动或复制到项目文件夹。
  2. 克隆或下载远程项目,例如 Git Clone,并将项目下载到项目文件夹。
  3. 通过软连接将项目链接到项目文件夹(Linux、Mac下使用ln命令,使用mklink命令)

这里我将本地的scrapy项目压缩成zip格式,上传。

上传完成后,点击部署按钮,先打包,然后部署到远程主机上。

部署

部署完成后,可以看到远程主机上已经有了新的scrapy项目。

点击编辑按钮,也可以对项目进行在线编辑。

在线编辑

部署完成后看一下gerapy工作目录,则发现projects下多了新部署的scrapy项目。

任务管理

支持设置定时任务,进入任务管理菜单,新建定时任务,比如新建一个crontab模式,实现每分钟运行一次等场景。

点击编辑可以修改定时任务。

定时任务

结语

本篇文章主要主要讲述了scrapy项目,在scrapyd和genrapy的加持下,最终实现界面化操作。这也是我觉得scrapy生态要优于原生爬虫的原因之一。

所以,爬虫并不是单纯的爬取数据,当你觉得太无聊、很没有技术含量的时候,不如在所处领域内深耕一下,寻找一些让自己感兴趣的东西。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门到放弃之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Scrapyd
    • 1.安装
      • 2. scrapyd配置
        • 3.项目配置
          • 4. 启动服务
            • 5.部署服务
              • 6.API
              • Gerapy
                • 1. 安装
                  • 2. 服务初始化
                    • 安装
                    • 初始化
                    • 创建数据库
                    • 用户创建
                  • 3.启动gerapy
                    • 前台方式运行
                    • 后台方式运行
                  • 4.菜单介绍
                    • 主机管理
                    • 项目管理
                    • 任务管理
                • 结语
                相关产品与服务
                项目管理
                CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档