python - 如何使用 Python 在 Selenium 中同时运行多个 webdriver 进程?
问题描述
我有一个包含数千个 URL 的列表。我想使用 Python/Selenuim 来:
- 加载每个 URL,
- 选择一个元素
- 关闭页面
为了让它运行得更快,我想并行运行很多这些进程,但我只能一次搞定如何做一个。
from selenium import webdriver
driver = webdriver.Chrome()
url_list = [
'https://www.instagram.com/p/Bj7NmpqBuSw/?tagged=style',
'https://www.instagram.com/p/Bj7Nic3Au85/?tagged=style'
]
for url in url_list:
driver.get(url)
driver.find_elements_by_class_name("class-name-for-profile-link")
driver.close()
我尝试使用很多浏览器标签
driver.switch_to.window(driver.window_handles[1])
但是手柄有点难以管理。
如何并行运行此过程?
解决方案
tl;博士我创建了这个 gist来给出一个简单的例子来说明如何并行运行简单的 Selenium 任务。您可以根据自己的目的对其进行调整。
并行化 Selenium 脚本的问题在于 Selenium 工作者本身就是进程。上面的脚本使用了两个FIFO 队列,一个存储空闲 Selenium 工作人员的 ID,另一个存储要传递给工作人员的数据。后台主线程侦听这两个队列并将传入数据分配给空闲的工作人员,在工作人员工作时将硒工作人员的 ID 从工作人员队列中取出。
要使代码适应您的目的,您需要做的就是更改函数中的代码selenium_task
。希望这可以帮助!
推荐阅读
- javascript - Javascript/Jquery/Gantt Highchart:点击任务进度弹出窗口应该打开
- ios - CallKit:屏幕锁定时启动应用程序
- php - 使文件可下载
- kotlin - 如何执行伴随对象lateinit是初始化检查
- python - 在 seaborn 中自定义颜色条 - 热图
- mysql - DATE_ADD(start_date, INTERVAL 1 DAY) 暴露了 Kotlin;
- javascript - JetBrains IDE 上的 Javascript:类型提示自治自定义元素实例
- string - Elm 过滤带有输入字符串的列表
- python - 如何将数据从一个函数插入到 PyQt5 中的多个小部件中
- php - 如何从 php 脚本自动将用户添加到 ubuntu 中的 squirrelmail