当线程循环时,我如何关闭浏览器并重新打开它?有没有更简单的方法来编写此代码?也有没有方法来设置一个计时器,我希望所有这些运行多长时间?我试图设置另一个循环作为外部循环,但它只是不断打开更多的Web浏览器。有没有方法来合并多处理和集成VPN交换机在其中?
import random
import threading
import time
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
driver_service = Service(executable_path="C:\\Program Files\\geckodriver.exe")
count = 5
def get_it(driver):
while True:
driver.get('https://www.youtube.com')
time.sleep(random.randint(5, 10))
for x in range(2):
for i in range(count):
browserThread = threading.Thread(target=get_it, args=(webdriver.Firefox(),))
browserThread.start()
我已经尝试了从driver.quit()
到driver.close()
的所有方法,它会停止我的线程运行并导致错误。
对于线程上的循环,我尝试了一个外部循环,但没有成功,它只是不断打开Web浏览器比我设置的更多。
1条答案
按热度按时间myzjeezk1#
我所做的是在函数内部创建***驱动程序***。它允许你根据需要重新打开和关闭浏览器。我不得不删除while循环,因为我不明白你为什么需要它。线程处理取决于你的机器资源。所以创建一个双for循环来使用线程不会给予性能优势。所以我坚持使用一个。
如果你在函数作用域中声明了 driver,它将创建一个新的浏览器示例并运行你的代码。根据我的经验,线程中浏览器关闭错误的原因是函数作用域。你应该完美地设置作用域,然后你就可以开始了。
对于VPN,你可以在selenium中使用代理。你会发现一些在代码中集成它们的解决方案。