urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=59587): 使用 Selenium Ge



黎明时分我的代码工作得很好,但今天当我醒来时它不再工作了,我没有改变任何一行代码,我也检查了Firefox是否更新,不,它没有,我不知道可能是什么,我一直在阅读urllib文档,但我找不到任何信息

from asyncio.windows_events import NULL
from ctypes.wintypes import PINT
from logging import root
from socket import timeout
from string import whitespace
from tkinter import N
from turtle import color
from urllib.request import Request
from hyperlink import URL
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
#from webdriver_manager.firefox import GeckoDriverManager
import time
from datetime import datetime
import telebot
#driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
colors = NULL
api = "******"
url = "https://blaze.com/pt/games/double"
bot = telebot.TeleBot(api)
chat_id = "*****"
firefox_driver_path = "/Users/Antônio/Desktop/roletarobo/geckodriver.exe"
firefox_options = Options()
firefox_options.add_argument("--headless")
webdriver = webdriver.Firefox(
executable_path = firefox_driver_path,
options = firefox_options)
with webdriver as driver:
    driver.get(url)
    wait = WebDriverWait(driver, 25)
wait.until(presence_of_element_located((By.CSS_SELECTOR, "div#roulette.page.complete")))
time.sleep(2)
results = driver.find_elements(By.CSS_SELECTOR, "div#roulette-recent div.entry")
for quote in results:
      quote.text.split('n')
data = [my_elem.text for my_elem in driver.find_elements(By.CSS_SELECTOR, "div#roulette-recent div.entry")][:8]
#método convertElements, converte elementos da lista em elementos declarados
def convertElements( oldlist, convert_dict ):
    newlist = []
    for e in oldlist:
      if e in convert_dict:
        newlist.append(convert_dict[e])
      else:
        newlist.append(e)
    return newlist
#fim do método
colors = convertElements(data, {'':"white",'1':"red",'2':"red",'3':"red",'4':"red",'5':"red",'6':"red",'7':"red",'8':"black",'9':"black",'10':"black",'11':"black",'12':"black",'13':"black",'14':"black"})
print(colors)

它工作得很好,从周日开始我一直在编码,它一直在工作

 File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriversupportwait.py", line 78, in until
    value = method(self._driver)
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriversupportexpected_conditions.py", line 64, in _predicate
    return driver.find_element(*locator)
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriverremotewebdriver.py", line 1248, in find_element      
    return self.execute(Command.FIND_ELEMENT, {
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriverremotewebdriver.py", line 423, in execute
    response = self.command_executor.execute(driver_command, params)
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriverremoteremote_connection.py", line 333, in execute    
    return self._request(command_info[0], url, body=data)
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesseleniumwebdriverremoteremote_connection.py", line 355, in _request   
    resp = self._conn.request(method, url, body=body, headers=headers)        
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesurllib3request.py", line 78, in request
    return self.request_encode_body(
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesurllib3request.py", line 170, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesurllib3connectionpool.py", line 813, in urlopen
    return self.urlopen(
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesurllib3connectionpool.py", line 785, in urlopen    retries = retries.increment(
  File "C:UsersAntônioAppDataLocalProgramsPythonPython310libsite-packagesurllib3utilretry.py", line 592, in increment    raise MaxRetryError(_pool, url, error or ResponseError(cause))urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=59587): Max retries exceeded with url: /session/b38be2fe-6d92-464f-a096-c43183aef6a8/element (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000173145EF520>: Failed to establish a new connection: [WinError 10061] No connections could be made because the target machine actively refused them'))

这个错误信息…

MaxRetryError(_pool, url, error or ResponseError(cause))urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=59587): Max retries exceeded with url: /session/b38be2fe-6d92-464f-a096-c43183aef6a8/element (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000173145EF520>: Failed to establish a new connection: [WinError 10061] No connections could be made because the target machine actively refused them'))

…暗示GeckoDriver无法启动/生成一个新的浏览上下文,即firefox会话。


根源此错误的根本原因可能是以下任何一种:

  • 这个错误可能会出现,如果已经关闭了浏览上下文手动与暴力,当驱动程序已经启动了元素/元素的监视
  • 有可能你正在尝试访问的应用程序正在限制来自你的系统/机器/ip-address/网络的请求。
  • 也有可能应用程序已经识别出Selenium驱动的GeckoDriver发起的firefox 浏览上下文是一个bot,并且拒绝任何访问。

解决方案

确保:

  • 要逃避作为bot的检测,请传递参数 --disable-blink-features=AutomationControlled ,如下所示:

    from selenium.webdriver.firefox.options import Options
    options = Options()
    options.add_argument('--disable-blink-features=AutomationControlled')
    
  • 总是在tearDown(){}方法中调用driver.quit()来关闭&销毁WebDriverWeb Client实例。

  • 诱导WebDriverWait同步快速移动的WebDriver与浏览上下文

得到了同样的问题,而试图生成的情况下,我需要重新启动我的驱动程序,如果它失败的某种原因(同时定位任何HTML元素),所以我只是重新声明了驱动程序配置(如下所示):

try:
    ## driver config
    driver = webdriver.Chrome(
        service=service, 
        options=options
    )
    run_script(driver)
except:
    # if the driver fails to load an element, then quit the driver
    driver.quit()
    print("nScrapper stopped, launching again in 4 seconds...")
    time.sleep(4)
    ## driver config
    driver = webdriver.Chrome(
        service=service, 
        options=options
    )
    time.sleep(3)
    run_script(driver)

昨天遇到了同样的错误。尝试quit()驱动程序并重新激活驱动程序。这对我很有效。输入图片描述

相关内容

  • 没有找到相关文章

最新更新