是否可以使用selenium和python同时打开50个不同的URL? 使用线程有可能吗?
如果是这样,我将如何去做? 如果没有,那么什么是这样做的好方法?答案 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"))