如何使用python硒同时打开不同的URL?

时间:2018-09-05 11:50:36

标签: python multithreading selenium

是否可以使用selenium和python同时打开50个不同的URL? 使用线程有可能吗?

如果是这样,我将如何去做? 如果没有,那么什么是这样做的好方法?

3 个答案:

答案 0 :(得分:0)

好吧,同时打开50个URL似乎是不合理的,将需要进行大量处理,但是有可能。但是我建议您使用一种迭代形式,一次打开一个URL。 50次。

list = ['list of urls here','2nd url'...]
driver = webdriver.Firefox()
for i in list:
  moving = driver.get(i)
  ...#rest of your code
driver.quit()

但是...您可以使用不同的驱动程序为每个所需的URL制作一个driver.get('url')。或标签。但这将需要大量处理。

答案 1 :(得分:0)

您可以在下面尝试在新标签页中逐个打开50个URL

urls = ["http://first.com", "http://second.com", ...]

for url in urls:
    driver.execute_script('window.open("%s")' % url)

答案 2 :(得分:0)

您可以使用celery(分布式任务队列)打开所有这些URL。

或者您可以在python> = 3.5上对aiohttp使用async和await,它在单个进程上同时运行单个线程,但同时运行(利用URL的等待时间来获取其他URL) 这是相同的代码示例。循环负责安排这些并发任务。

#!/usr/local/bin/python3.5
import asyncio
from aiohttp import ClientSession

async def hello(url):
    async with ClientSession() as session:
        async with session.get(url) as response:
           response = await response.read()
           print(response)

loop = asyncio.get_event_loop()

loop.run_until_complete(hello("http://httpbin.org/headers"))