scrapydweb安装教程

scrapydweb安装教程

前言

scrapydweb是在scrapyd搭建完成,scrapyd部署联调成功后的工作,其应用场景是实现服务器的分布式爬虫统一可视化管理,前面工作的教程可以查看传送门:

  • scrapyd安装教程,符合官方文档说明
  • scrapy部署教程

安装

创建python环境

同样还是推荐使用miniconda进行安装,创建专属的虚拟环境。miniconda安装教程,
主要是因为scrapydweb是推荐使用python3.6-3.9的python环境。本人用了python3.11,确实出现了很多语法报错的问题。所以还是专门使用了conda做了一个python3.8的环境进行安装,还算比较顺利

先安装requirements.txt文件

这里属于个人操作,如果没遇到太多问题。可以直接跳过
从scrapydweb的官方github中获取出requirements.txt文件,先把一部分库和包安装好,因为个人发现直接pip install scrapydweb安装出来的sqlalchemy版本是2+的,而requirements.txt是1+的。根据以往经验,为了防止一系列的sql报错,本人选择跟官方requirements.txt同步。

https://github.***/my8100/scrapydweb

在code中找到requirements.txt文件,拷贝到服务器,然后执行安装指令

pip install -r requirements.txt

安装scrapydweb

pip install scrapydweb

安装logparser

该库主要是用于日志分析使用

pip install logparser

安装pywin32

只针对windows需要安装

pip install pywin32

配置文件scrapydweb_settings_v10.py

创建文件夹

目录可以自行选择

mkdir -p /home/scrapydweb

生成默认scrapydweb_settings_v10.py文件

首先通过指令先启动一下scrapydweb

(scrapydweb) [root@iZj6ca7fihevpip61p8k3uZ scrapydweb]# scrapydweb
[2024-01-09 15:54:44,097] INFO     in apscheduler.scheduler: Scheduler started
[2024-01-09 15:54:44,103] INFO     in scrapydweb.run: ScrapydWeb version: 1.4.1
[2024-01-09 15:54:44,103] INFO     in scrapydweb.run: Use 'scrapydweb -h' to get help
[2024-01-09 15:54:44,103] INFO     in scrapydweb.run: Main pid: 29070
[2024-01-09 15:54:44,103] DEBUG    in scrapydweb.run: Loading default settings from /root/miniconda3/envs/scrapydweb/lib/python3.8/site-packages/scrapydweb/default_settings.py
[2024-01-09 15:54:44,168] ERROR    in scrapydweb.run: scrapydweb_settings_v10.py not found: 

ATTENTION:
You may encounter ERROR if there are any running timer tasks added in v1.2.0,
and you have to restart scrapydweb and manually edit the tasks to resume them.

The config file 'scrapydweb_settings_v10.py' has been copied to current working directory.
Please add your SCRAPYD_SERVERS in the config file and restart scrapydweb.

根据提示,scrapydweb会在当前目录下自动拷贝一个scrapydweb_settings_v10.py文件
打开scrapydweb_settings_v10.py文件

配置基本参数

开启账号密码验证

主要关注这一部分,这里由于个人需求,需要设置密码,所以设置ENABLE_AUTH = True,并设置了账号密码

# The default is False, set it to True to enable basic auth for the web UI.
ENABLE_AUTH = True
# In order to enable basic auth, both USERNAME and PASSWORD should be non-empty strings.
USERNAME = 'my_username'
PASSWORD = 'my_password'

配置你的scrapyd服务

以下是三种配置scrapyd的方式:
第一种,主要应用于本地,不推荐
第二种,更符合url形式的参数,推荐
第三种,看起来挺清晰的,但填上你的信息后,看不出是前面两个和最后一个是什么,可以用

SCRAPYD_SERVERS = [
    '127.0.0.1:6800',
    'username:password@localhost:6801#group',
    ('username', 'password', 'localhost', '6801', 'group'),
]

配置完以上两项后,scrapydweb基本可以使用

配置项目存放目录

该目录是用于自动部署时使用的,只要把你的scrapy项目放到该目录,页面上的Deploy Project——Auto packaging就可以识别到项目

SCRAPY_PROJECTS_DIR = '/home/scrapydweb/projects'

启动scrapydweb

scrapydweb

访问页面:http://127.0.0.1:5000/,域名该你自己对应ip,端口5000

由此可以看出上面配置的两台scrapyd服务和对应的组

scrapydweb做成服务

找出scrapydweb执行文件所在位置

which scrapydweb

通过以上命令,可以找出当前python环境中,scrapydweb的执行文件路径
我找出来的路径是这样的/root/miniconda3/envs/scrapydweb/bin/scrapydweb
直接执行一下,看是否能正常启动起scrapydweb,可以则进行下一步

systemd添加服务文件

vim /etc/systemd/system/scrapydweb.service

填入以下内容

[Unit]
Description=ScrapydWeb Service
After=***work.target

[Service]
ExecStart=/root/miniconda3/envs/scrapydweb/bin/scrapydweb

[Install]
WantedBy=multi-user.target

记得要修改ExecStart为你which scrapydweb搜索出来的路径

重新加载 systemd,以读取新的服务文件

systemctl daemon-reload

设置开机启动scrapydweb

systemctl enable scrapydweb.service

启动scrapydweb服务

systemctl start scrapydweb.service

拷贝已配置的scrapydweb_settings_v10.py文件到根目录

因为做成了服务,服务执行的默认目录就是根目录

cp /home/scrapydweb/scrapydweb_settings_v10.py /scrapydweb_settings_v10.py

常用指令

停止scrapydweb服务

systemctl stop scrapydweb.service

重启scrapydweb服务

systemctl restart scrapydweb.service

查看scrapydweb服务状态

systemctl status scrapydweb.service

查看scrapydweb变成服务后的日志

journalctl -fu scrapydweb.service

查看scrapydweb变成服务后的日志,指定时间范围

journalctl -u scrapydweb.service --since "2024-01-01 00:00:00" --until "2024-01-02 00:00:00"

安装logparser

  • logparser是scrapyd专属的,scrapydweb需配合logparser才能统计每个爬虫的爬取page数和items数,report也要用到
  • logparser额安装我们选择安装在scrapyd的虚拟环境下,因为其他服务器未必有scrapydweb,所以统一安装在scrayd服务的python虚拟环境中

pip安装

logparser是专属于scrapyd服务的,直接命令行安装即可

pip install logparser

启动

logparser

这个时候会提示

[2024-01-11 15:31:01,124] INFO     in logparser.run: LogParser version: 0.8.2
[2024-01-11 15:31:01,124] INFO     in logparser.run: Use 'logparser -h' to get help
[2024-01-11 15:31:01,124] INFO     in logparser.run: Main pid: 26764
[2024-01-11 15:31:01,124] INFO     in logparser.run: Check out the config file below for more advanced settings.

****************************************************************************************************
Loading settings from /root/miniconda3/envs/scrapydweb/lib/python3.8/site-packages/logparser/settings.py
****************************************************************************************************

[2024-01-11 15:31:01,125] DEBUG    in logparser.run: Reading settings from ***mand line: Namespace(delete_json_files=False, disable_tel***=False, main_pid=0, scrapyd_logs_dir='/root/logs', scrapyd_server='127.0.0.1:6800', sleep=10, verbose=False)
[2024-01-11 15:31:01,125] DEBUG    in logparser.run: Checking config
[2024-01-11 15:31:01,125] INFO     in logparser.run: SCRAPYD_SERVER: 127.0.0.1:6800
[2024-01-11 15:31:01,125] ERROR    in logparser.run: Check config fail: 

SCRAPYD_LOGS_DIR not found: '/root/logs'
Check and update your settings in /root/miniconda3/envs/scrapydweb/lib/python3.8/site-packages/logparser/settings.py

这里直接要我们从源码里修改配置,这点其实不是很好,其实可以通过指令去指定,就是启动的时候加上参数

logparser -dir /home/scrapyd/logs

这样就可以指定去/home/scrapyd/logs寻找scrapyd的日志
但这边为了logparser做成服务,就还是用了修改源码里面的settings.py

logparser做成服务

找出服务文件

which logparser

找出路径/root/miniconda3/envs/scrapyd/bin/logparser

生成服务文件

vim /etc/systemd/system/logparser.service

填入以下内容

[Unit]
Description=Logparser Service
After=***work.target

[Service]
ExecStart=/root/miniconda3/envs/scrapyd/bin/logparser

[Install]
WantedBy=multi-user.target

记得要修改ExecStart为你which logparser搜索出来的路径

重新加载 systemd,以读取新的服务文件

systemctl daemon-reload

设置开机启动scrapydweb

systemctl enable logparser

启动scrapydweb服务

systemctl start logparser

scrapydweb优点

项目自动部署

只需要设置SCRAPY_PROJECTS_DIR = ‘/home/scrapydweb/projects’,然后通过跳板机jumpserver使用git clone,将项目从gitlab同步到scrapydweb,直接可以在页面上进行部署

爬虫批量调度

可以通过批量指令给多个scrapyd同时启动或者定制爬虫

scrapydweb缺点

爬虫调度无法选择数量

转载请说明出处内容投诉
CSS教程_站长资源网 » scrapydweb安装教程

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买