gpt4 book ai didi

Python 与 selenium 并行执行

转载 作者:太空狗 更新时间:2023-10-30 01:12:27 26 4
gpt4 key购买 nike

我对使用 selenium 在 python 中并行执行感到困惑。似乎有几种方法可以解决这个问题,但有些似乎已经过时了。

  1. 有一个名为 python-wd-parallel 的 python 模块似乎有一些功能可以做到这一点,但它是 2013 年的,现在还有用吗?我还找到了this example .

  2. concurrent.futures,这个看起来比较新,但是实现起来不是那么容易。 有人有在 selenium 中并行执行的工作示例吗?

  3. 也有只使用线程和执行器来完成工作,但我觉得这会更慢,因为它没有使用所有内核并且仍在以串行形式运行。

使用 selenium 进行并行执行的最新方法是什么?

最佳答案

使用joblib's Parallel模块来做到这一点,它是一个很棒的并行执行库。

假设我们有一个名为 urls 的 url 列表,我们想同时截取每个 url 的屏幕截图

首先让我们导入必要的库

from selenium import webdriver
from joblib import Parallel, delayed

现在让我们定义一个将屏幕截图作为 base64 的函数

def take_screenshot(url):
phantom = webdriver.PhantomJS('/path/to/phantomjs')
phantom.get(url)
screenshot = phantom.get_screenshot_as_base64()
phantom.close()

return screenshot

现在并行执行你要做的是

screenshots = Parallel(n_jobs=-1)(delayed(take_screenshot)(url) for url in urls)

当这行代码执行完毕时,您将在 screenshots 中看到所有已运行进程的所有数据。

关于并行的解释

  • Parallel(n_jobs=-1) 意味着使用您可以使用的所有资源
  • delayed(function)(input)joblib 为您尝试并行运行的函数创建输入的方式

更多信息可以在joblib文档中找到

关于Python 与 selenium 并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42732958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com