爬虫工作量由小到大的思维转变---<第四十四章 Scrapyd 用gerapy管理多台机器爬虫>

前言:

之前讲过关于如何在gerapy中部署本地爬虫,

爬虫工作量由小到大的思维转变---<第三十四章 Scrapy 的部署scrapyd+Gerapy>_gerapy如何登录-CSDN博客

爬虫工作量由小到大的思维转变---<第三十五章 Scrapy 的scrapyd+Gerapy 部署爬虫项目>_scrapy 部署到gerapy-CSDN博客

这次讲讲,如何把不同服务器上的爬虫部署到gerapy上面!!!

正文:

要让 Gerapy 管理两台电脑上的爬虫,需要保证 Gerapy 能够访问这两台电脑上运行的 Scrapyd 服务。默认情况下,Scrapyd 绑定在 127.0.0.1 上,这意味着它只监听来自本地机器的请求。要使其能够接受远程机器(如 Gerapy 所在机器)的请求,需要修改 Scrapyd 的配置以便它绑定在一个外部可访问的 IP 地址或 0.0.0.0(意味着监听所有可用的网络接口)。

​​​​​​​

步骤:

1.修改 Scrapyd 配置文件

(默认位置在 /etc/scrapyd/scrapyd.conf,如果不存在,可能需要在 Scrapyd 安装目录下手动创建一个)。

在单独的项目文件夹里

1.虚拟环境里的scrapy.conf文件需要自己手动创建!
2.相关配置信息,如下:
[scrapyd]
# 配置部分开始

eggs_dir    = eggs
# eggs目录用于存储上传的Scrapy项目的egg包(Python的二进制分发格式)。
# 这些egg包是通过Scrapyd的API上传的,Scrapyd会从中运行Scrapy爬虫。

logs_dir    = logs
# 日志目录用于存储Scrapyd运行爬虫的日志文件。

items_dir   = items
# 存放爬取项目产生的数据文件(items)的目录。
# 这个目录通常在使用Scrapy的Feed exports时指定文件路径时使用。

jobs_to_keep = 5
# 指定Scrapyd服务在其数据库中保留已完成工作的数量。
# 当完成新的爬虫作业时,超出此数量的最旧记录将从数据库中删除。

dbs_dir     = dbs
# 存储Scrapyd使用的SQLite数据库的目录。
# 这些数据库包含了作业的状态信息和其他元数据。

bind_address = 192.168.2.1
# 绑定地址,指定Scrapyd监听的网络接口。
# 设为0.0.0.0表示监听所有网络接口,允许从任何机器访问Scrapyd服务。

http_port   = 6800
# 指定Scrapyd服务监听的HTTP端口号。
# 通过这个端口可以访问Scrapyd的Web界面和API。
3.保存的scrapyd.conf的文件位置:

放在与venv文件夹同级的地方,图例:爬虫工作量由小到大的思维转变---<第四十四章 Scrapyd 用gerapy管理多台机器爬虫>_第1张图片

2.在 [scrapyd] 部分中,找到 bind_address 配置项,

将其修改为以下任一选项:

使其绑定在特定的外部 IP 地址上,如电脑 A 或 B 的 IP 地址。例如,对于电脑 A,可以设置为:bind_address = 192.168.2.1

或者,使其绑定在所有地址上:bind_address = 0.0.0.0

3.保存配置文件并重启 Scrapyd 服务以应用更改。

    1.重启scrapyd:

                1.找到 Scrapyd 进程ID:
tasklist | findstr scrapyd

               2.使用从上一步得到的进程ID,替换

taskkill /PID  /F
图例:爬虫工作量由小到大的思维转变---<第四十四章 Scrapyd 用gerapy管理多台机器爬虫>_第2张图片

        2.启动scrapyd

                cmd进入到里面,

E:\项目文件夹> venv\Scripts\activate  # 激活虚拟环境
(venv) E:\项目文件夹> scrapyd          # 启动 Scrapyd

可能会遇上的问题:

Failed to load application: 'gbk' codec can't decode byte 0x80 in position 27: illegal multibyte sequence

爬虫工作量由小到大的思维转变---<第四十四章 Scrapyd 用gerapy管理多台机器爬虫>_第3张图片

解决:
方法1:

在启动虚拟环境后,

(venv) E:\项目名>set PYTHONUTF8=1

(venv) E:\项目名>scrapyd
2024-02-03T23:27:30+0800 [-] Loading E:\football\venv\Lib\site-packages\scrapyd\txapp.py...
2024-02-03T23:27:30+0800 [-] Basic authentication disabled as either `username` or `password` is unset
2024-02-03T23:27:30+0800 [-] Scrapyd web console available at http://192.168.2.6:6800/
2024-02-03T23:27:30+0800 [-] Loaded.
2024-02-03T23:27:30+0800 [twisted.application.app.AppLogger#info] twistd 22.10.0 (E:\football\venv\Scripts\python.exe 3.11.2) starting up.
2024-02-03T23:27:30+0800 [twisted.application.app.AppLogger#info] reactor class: twisted.internet.selectreactor.SelectReactor.
2024-02-03T23:27:30+0800 [-] Site starting on 6800
2024-02-03T23:27:30+0800 [twisted.web.server.Site#info] Starting factory 
2024-02-03T23:27:30+0800 [Launcher] Scrapyd 1.4.3 started: max_proc=96, runner='scrapyd.runner'
2024-02-03T23:27:41+0800 [twisted.python.log#info] "192.168.2.6" - - [03/Feb/2024:15:27:40 +0000] "GET / HTTP/1.1" 200 725 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
2024-02-03T23:27:41+0800 [twisted.python.log#info] "192.168.2.6" - - [03/Feb/2024:15:27:40 +0000] "GET /favicon.ico HTTP/1.1" 404 167 "http://192.168.2.6:6800/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
2024-02-03T23:28:08+0800 [twisted.python.log#info] "192.168.2.6" - - [03/Feb/2024:15:28:07 +0000] "GET / HTTP/1.1" 200 725 "-" "python-requests/2.31.0"
2024-02-03T23:28:09+0800 [twisted.python.log#info] "192.168.2.6" - - [03/Feb/2024:15:28:09 +0000] "GET / HTTP/1.1" 200 725 "-" "python-requests/2.31.0"
2024-02-03T23:28:41+0800 [twisted.web.http.HTTPChannel#info] Timing out client: IPv4Address(type='TCP', host='192.168.2.6', port=10328)
2024-02-03T23:28:41+0800 [twisted.web.http.HTTPChannel#info] Timing out client: IPv4Address(type='TCP', host='192.168.2.6', port=10327)
方法2:爬虫工作量由小到大的思维转变---<第四十四章 Scrapyd 用gerapy管理多台机器爬虫>_第4张图片​​​​​​​

4.在 Gerapy 的设置中,配置两台电脑上的 Scrapyd 服务地址。

这通常是通过添加或修改 Gerapy 的项目设置或直接通过其界面来完成的。需要输入电脑 A 和 B 的 IP 地址及端口号,如 http://192.168.2.1:6800http://192.168.2.2:6800

这样配置完成后,Gerapy 就应该能够管理这两台电脑上的爬虫了。

你可能感兴趣的:(scrapy爬虫开发,爬虫,scrapy,分布式)