gpt4 book ai didi

python - 从脚本/Python 并行运行 Selenium scraper

转载 作者:行者123 更新时间:2023-12-01 08:32:02 25 4
gpt4 key购买 nike

我刚刚学会了 Selenium 来抓取一些 Scrapy 无法获取的数据。我从不同的机器人制作了不同的脚本,它们分别按预期运行。

两个浏览器相继打开,而我想让它们同时运行。有没有一种简单的方法可以做到这一点?感谢您的帮助!

编辑:

正如所示,我一直在尝试使用多处理。但不幸的是它当时只运行一个脚本,同时打开了两个 selenium 窗口。一是保持不活动状态。如果您想看看,这是我的代码:

u = UBot()
google = GoogleBot()

list_test = [[u.main(), google.main()]]

processes = []
for test in list_test:
p = multiprocessing.Process()
processes.append(p)
p.start()

编辑2:

我可以解决它并在下面发布代码!

最佳答案

我做了一个简单的库,名为 selsunpool包装 concurrent.futures 您可能想尝试一下。它创建了一个本地的 selenium 工作池,这些工作池保持事件状态,并且可以在并发作业中重复使用任意次。目前还没有很好的文档记录,但使用起来很简单。这是一个例子。

第 1 步:使用 selenium job 装饰器创建一个函数。装饰器参数定义了 webdriver 附加到的 kwarg 的名称(从池执行器返回)。

from selsunpool import selenium_job, SeleniumPoolExecutor


@selenium_job(webdriver_param_name='mydriver')
def get_url(url, mydriver):
mydriver.get(url)
return mydriver.title

第 2 步:以与使用 ThreadpoolExecutor 相同的方式使用池执行器。注意:作业结果是通过一个属性检索的,该属性是一个生成器,在完成时生成结果。

with SeleniumPoolExecutor(num_workers=2, close_on_exit=True) as pool:
sites = ['https://google.com', 'https://msn.com']
pool.map(get_url, sites)
print(list(pool.job_results))

关于python - 从脚本/Python 并行运行 Selenium scraper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53871366/

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