前言:
之前讲过关于如何在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文件夹同级的地方,图例:
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,替换 <PID>:
taskkill /PID <PID> /F
图例:
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
解决:
方法1:
设置python的编码格式(默认)为utf8
在启动虚拟环境后,
(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 <twisted.web.server.Site object at 0x00000248EC65C810>
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:
4.在 Gerapy 的设置中,配置两台电脑上的 Scrapyd 服务地址。
这通常是通过添加或修改 Gerapy 的项目设置或直接通过其界面来完成的。需要输入电脑 A 和 B 的 IP 地址及端口号,如 http://192.168.2.1:6800
和 http://192.168.2.2:6800
。
这样配置完成后,Gerapy 就应该能够管理这两台电脑上的爬虫了。