栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

python和selenium grid实现分布式爬虫

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python和selenium grid实现分布式爬虫

python和selenium grid实现分布式爬虫

selenium grid的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令转发给代理节点来执行。

Selenium Grid环境部署 下载selenium-server-standalone jar包

下载地址

这里我选择下载的版本是selenium-server-standalone-3.9.1.jar

在命令窗口进入selenium-server-standalone-3.9.1.jar存放的目录,如E:seleniumGrid

启动hub

输入以下命令,将本机当做hub启动
java -jar selenium-server-standalone-3.9.1.jar -role hub -maxSession 10 -port 4444

注意:启动hub时不可以关闭命令行窗口

命令参数:

-role hub表示启动运行hub;

-port是设置端口号,hub的默认端口是4444,这里使用的是默认的端口,当然可以自己配置;

-maxSession为最大会话请求,这个参数主要要用并发执行测试用例,默认是1,建议设置10及以上

每次启动hub都要重新输入命令,如果嫌麻烦可以在一个txt文件中写入命令然后改文件后缀名为bat双击启动

浏览器输入http://localhost:4444/grid/console,如果成功显示一下页面则启动成功
启动hub后,就需要运行节点,最少都要有一个node节点,而node节点可以与hub在同一台机器上运行。

启动Node

现在本机启动一个节点Node1,输入命令java -jar selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://192.168.1.79:4444/grid/register -maxSession 5 -browser browserName=chrome,version=73,seleniumProtocol=WebDriver,maxInstances=5
注意:启动Node时也不可以关闭命令行窗口
命令参数:

-role node:表示启动的是node节点

-port 5555:指定node节点端口

-hub http://192.168.1,79:4444/grid/register:表示hub机地址

-maxSession 5:node节点最大会话请求

-version:浏览器版本,可自己定义

-browser browserName=chrome,seleniumProtocol=WebDriver,maxInstances=5:=设置浏览器的参数,browserName表示浏览器名字,如chrome、firefox、ie;maxInstances表示最大实例,可以理解为最多可运行的浏览器数,这个值很关键,不能大于前面maxSession的值,否则可能会出错

此时刷新http://localhost:4444/grid/console页面可以发现新的节点已经添加点Configuration可以查看节点的详细信息

启动Node节点2

在另一部主机上启动node节点2

需要注意:这部主机需要能够和hub主机ping通,并且也同样需要配置python环境,安装selenium以及安装浏览器驱动,不然会报错。

在另一部主机启动命令行窗口,同样进入存放selenium-server-standalone-3.9.1.jar目录下,输入命令:
java -jar selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://192.168.1.79:4444/grid/register -maxSession 5 -browser browserName=chrome,version=73,seleniumProtocol=WebDriver,maxInstances=5

刷新http://localhost:4444/grid/console页面可以发现新的节点已经添加

python代码实现

通过hub主机操纵node节点主机访问网页

from selenium import webdriver

option=webdriver.ChromeOptions()
option.set_capability('browserName','chrome')   # 指定远程计算机执行使用的浏览器为chrome
option.set_capability('platform','WINDOWS')     # 远程计算机的平台
try:
    #command_executor指定Node节点主机
    driver = webdriver.Remote(command_executor='http://192.168.1.89:5555/wd/hub', options=option)
    driver.get('http://www.baidu.com')
    print(driver.page_source)
except Exception:
    print(Exception)

可以发现由hub主机运行的代码,实际是在节点Node2主机(ip:192.168.1.89)上访问百度页面的,而返回的网页源码是直接在hub主机上输出的。

参考文章:https://blog.csdn.net/ouyanggengcheng/article/details/79935657

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号