EasySpider Docker运行示例

在日常开发或测试中,自动化浏览器的操作已经变得越来越重要。而通过Docker来运行Selenium Chrome镜像,可以轻松实现自动化浏览器测试,同时支持多任务并行处理。今天我们来看看如何使用Docker来启动Selenium Chrome镜像并运行任务。

前提条件

首先,你需要确保已经安装了Docker。如果还没有安装,可以根据Docker官方指南进行安装。安装完成后,我们就可以进入Selenium Chrome镜像的操作了。

启动Selenium Chrome镜像

运行以下命令来启动一个Selenium Chrome镜像,并且将容器端口映射到主机的4444端口:

    
bash
sudo docker run -d -p 4444:4444 --name selenium-chrome --shm-size="4g" selenium/standalone-chrome

此命令会启动一个独立的Chrome实例,我们可以通过Docker容器中的Chrome浏览器来执行自动化任务。

运行任务的两种方式

A. 直接运行打包好的程序
如果你不打算自己编译程序,可以直接运行打包好的程序。下载包含Docker支持的程序版本,执行以下命令:

    
bash
./EasySpider/resources/app/chrome_linux64/easyspider_executestage --ids [0] --docker_driver http://localhost:4444/wd/hub --user_data 0 --server_address http://localhost:8074 --config_folder "./" --headless 1 --read_type local --config_file_name config.json --saved_file_name

B. 自行修改源代码并运行
如果你需要自行修改源代码,可以进入项目的ExecuteStage文件夹并安装Python环境(版本为3.10或3.11)。使用以下命令安装依赖:

    
bash
pip3 install -r requirements.txt

然后执行任务:

    
bash
python3 easyspider_executestage.py --ids [0] --docker_driver http://localhost:4444/wd/hub --user_data 0 --server_address http://localhost:8074 --config_folder "./" --headless 1 --read_type local --config_file_name config.json --saved_file_name

解决常见问题

如果在运行过程中出现Cannot find file ../ElectronJS/chrome_win64/stealth.min.js的错误,只需手动创建文件夹并将相应文件复制到指定目录下即可。

其他类似文件找不到的问题也可以通过同样的方式解决,确保文件路径正确无误。

查看浏览器占用情况

任务执行时,一个浏览器实例只能同时处理一个任务。为了查看当前浏览器的占用情况,你可以访问http://localhost:4444来查看。如果出现浏览器被占用无法执行任务的情况,重启Docker镜像即可:

    
bash
sudo docker restart selenium-chrome

rpa_tutorial_easyspider_case_Running_example_1

同时运行多个任务

如果你需要同时运行多个浏览器实例以便处理多个任务,可以使用Selenium Hub和Node。Selenium Hub作为中央节点,管理多个Selenium Node。下面是具体步骤:

1. 启动Selenium Hub

    
bash
sudo docker network create grid
sudo docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub

2. 启动Selenium Nodes

接下来,通过以下命令连接多个Chrome节点到Selenium Hub。可以根据需要启动多个节点,例如启动三个浏览器实例:

    
bash
sudo docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub --shm-size="4g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-chrome
sudo docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub --shm-size="4g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-chrome
sudo docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub --shm-size="4g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-chrome

3. 任务执行

其余命令执行方式与之前相同,仍然在--docker_driver后指定远程Docker地址,默认是http://localhost:4444/wd/hub

你可以访问http://localhost:4444查看各个浏览器实例的占用情况。

rpa_tutorial_easyspider_case_Running_example_2

这个Docker运行Selenium的方案真心推荐给那些需要同时运行多个任务的小伙伴们,特别是那些需要自动化浏览器操作的开发者和测试人员。有了Selenium Hub和多个Node的支持,你可以轻松实现多任务并行执行,极大提高效率。

阅读全文
AI工具教程
免费领取AI学习资料 进AI副业交流群
礼物
AI工具教程
免费领取AI学习资料 进AI副业交流群