硒连接被拒绝



我正在使用Python/Selenium抓取Google搜索页面,自昨晚以来,我遇到了MaxRetyError: p[Errno 61] Connection refused错误。我调试了我的代码,发现错误就在这里开始于这个代码块"

domain = pattern.search(website)
counter = 2
# keep running this until the url appears like normal
while domain is None:
counter += 1
# close chrome and try again
print('link not found, closing chrome and restarting ...nwaiting {} seconds...'.format(counter))
chrome.quit()
time.sleep(counter)
# chrome = webdriver.Chrome()
time.sleep(10)                              ### tried inserting a timer.sleep to delay request
chrome.get('https://google.com')            ### error is right here. This is the second instance of chrome.get in this script
target = chrome.find_element_by_name('q')
target.send_keys(college)
target.send_keys(Keys.RETURN)
# parse the webpage
soup = BeautifulSoup(chrome.page_source, 'html.parser')
website = soup.find('cite', attrs={'class': 'iUh30'}).text
print('tried to get URL, is this it? : {}n'.format(website))
pattern = re.compile(r'w+.(edu|com)')
domain = pattern.search(website)

我不断收到以下错误:

raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='ADDRESS', port=PORT): Max retries exceeded with url: /session/92ca3da95353ca5972fb5c520b704be4/url (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x11100e4e0>: Failed to establish a new connection: [Errno 61] Connection refused',))

正如您在上面的代码块中看到的,我输入了一个timer.sleep()但它似乎根本没有帮助。对于上下文,此脚本是函数的一部分,在另一个脚本中循环中重复调用该函数。但同样,我确保在每次调用webdriver.get()方法之间添加延迟。截至目前,我的脚本在此循环的第一次迭代中失败。

我尝试在谷歌上搜索这个问题,但我发现的最接近的事情是这个。它似乎说的是相同的确切错误,并且顶部答案确定了导致问题的相同方法,但我真的不明白解决方案和结论部分在说什么。我知道MaxRetryError调试令人困惑,但解决方案究竟是什么?

它提到了一个max_retries论点和回溯,但我不知道它们在这种情况下是什么意思。有什么方法可以捕获此错误(在硒的上下文中(?我在Stack Exchange上有一些线程提到捕获错误,但仅在urllib3的上下文中。就我而言,我需要为硒包捕获相同的错误。

感谢您的任何建议

我的代码仍然每隔一段时间就会遇到问题(可以通过使用代理来解决(,但我想我找到了问题的根源。这个循环预期第一个模式匹配将返回一个.edu.com,但不期望.org。因此,当第一个搜索结果返回.org时,我的代码无限期运行。这是问题的根源:

website = soup.find('cite', attrs={'class': 'iUh30'}).text
print('tried to get URL, is this it? : {}n'.format(website))
pattern = re.compile(r'w+.(edu|com)') # does not anticipate .org's 

现在我的代码运行正常,尽管当代码运行时间过长时,我确实会遇到错误(在这种情况下,问题的根源要清楚得多(。

您过早退出 Chrome 驱动程序。 调用chrome.quit()后,将导致后续调用chrome.get('https://google.com')失败,然后自动重试导致 MaxRetryError。

尝试删除对chrome.quit()的调用。

相关内容

  • 没有找到相关文章

最新更新