通过 Selenium - Python 在新选项卡中打开网址的最快方法是什么?
问题描述
我想创建一个python脚本来打开很多标签
I want to create a python script to open up a lot tabs
import os
import selenium
from selenium import webdriver
driver =webdriver.Chrome('/usr/local/bin/chromedriver')
driver.execute_script("window.open('http://www.msn.com');")
driver.execute_script("window.open('http://www.cnn.com');")
driver.execute_script("window.open('http://www.yahoo.com');")
driver.execute_script("window.open('https://www.apple.com');")
driver.execute_script("window.open('https://www.google.com');")
driver.execute_script("window.open('https://www.stackoverflow.com');")
# driver.quit()
当我跑步时,我得到了
我现在拥有的是最快的方法吗?
Is what I have right now is the fastest way?
我曾经有过这个
# -*- coding: utf-8 -*-
import os
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver =webdriver.Chrome('/usr/local/bin/chromedriver')
#1
driver.get("http://msn.com")
#2
driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.switch_to.window(driver.window_handles[-1])
driver.get("http://cnn.com")
#3
driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.switch_to.window(driver.window_handles[-1])
driver.get("http://www.yahoo.com")
#4
driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.switch_to.window(driver.window_handles[-1])
driver.get("https://www.apple.com")
#5
driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.switch_to.window(driver.window_handles[-1])
driver.get("https://www.google.com")
#6
driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.switch_to.window(driver.window_handles[-1])
driver.get("https://www.stackoverflow.com")
它可以工作,但它很痛苦慢
.
It works but it is painfully slow
.
我现在从 6 个开始,但我想加载 100 个标签.
I start with 6 now, but I want to load 100 tabs.
另外,我如何摆脱我的第一个奇怪的标签?我什至确定它为什么在那里.
Also, how do I get rid of my first weird looking tab? I am even sure why it is there.
解决方案
升级你MAC上的chromedriver(>2.25)/chrome浏览器(>55.0),去掉空数据;标签.您可以使用 threading
或 multiprocessing
来加快处理速度.
Upgrade the chromedriver(>2.25)/chrome browser(>55.0) on your MAC to remove the empty data; tab.
You can use threading
or multiprocessing
to speed up the process.
from multiprocessing import Process
import os
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver =webdriver.Chrome('/usr/local/bin/chromedriver')
driver.get("http://msn.com")
def func1():
print 'launching: MSN'
driver.execute_script("window.open('http://www.msn.com');")
def func2():
print 'launching: CNN'
driver.execute_script("window.open('http://www.cnn.com');")
if __name__ == '__main__':
p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
p1.join()
p2.join()
def runInParallel(*fns):
proc = []
for fn in fns:
p = Process(target=fn)
p.start()
proc.append(p)
for p in proc:
p.join()
runInParallel(func1, func2)
取决于你有多少 CPU、机器的负载、计算机中发生的许多事情的时间都会影响线程/进程的启动时间.此外,由于进程在创建后立即启动,因此创建进程的开销也必须以您看到的时间差来计算.
Depending on how many CPUs you have, the load of the machine, the timing of many things happening in the computer will have an influence on the time the threads/process start. Also, since the processes are started right after creation, the overhead of creating a process also has to be calculated in the time difference you see.
相关文章