为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Firefox headless、Selenium 和 Python 时出错

使用 Firefox headless、Selenium 和 Python 时出错

万千封印 2023-05-09 14:50:44
我正在尝试使用 firefox headless、Selenium 框架和 Python 在 Amazon EC2 Ubuntu linux 上获取网页。我的代码如下所示:from selenium import webdriverfrom selenium.webdriver.firefox.options import Optionsoptions = Options()options.headless = Truedriver = webdriver.Firefox(options=options,executable_path='/home/ubuntu/geckodriver')driver.get("https://google.com")print('Done')driver.quit()现在,当我运行它时,出现以下错误:Traceback (most recent call last):  File "test1.py", line 7, in <module>    driver = webdriver.Firefox(options=options,executable_path='/home/ubuntu/geckodriver')  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__    RemoteWebDriver.__init__(  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__    self.start_session(capabilities, browser_profile)  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session    response = self.execute(Command.NEW_SESSION, parameters)  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute    self.error_handler.check_response(response)  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.TimeoutException: Message: Connection refused (os error 111)我已确保我的 geckodriver 和 firefox 版本兼容,我已尝试重新启动我的 EC2 实例,但没有任何效果。任何帮助表示赞赏。
查看完整描述

5 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

更新:这似乎是一个操作系统问题。当我使用 Amazon Linux 创建一个新的 EC2 实例时,相同的代码可以毫无问题地运行。旧的 EC2 实例 (Ubuntu) 仍然给我同样的错误。



查看完整回答
反对 回复 2023-05-09
?
月关宝盒

TA贡献1772条经验 获得超5个赞

那还能用吗。


from selenium.webdriver.firefox.options import Options


options = Options()

options.add_argument('--headless')

driver = webdriver.Firefox(executable_path='path to the driver', options=options)


查看完整回答
反对 回复 2023-05-09
?
UYOU

TA贡献1878条经验 获得超4个赞

试试这个 [with webdriver-manager ]


pip install webdriver-manager 

from webdriver_manager.firefox import GeckoDriverManager

self.browser = webdriver.Firefox(executable_path=GeckoDriverManager().install())

它会自动修复您遇到的任何驱动程序错误


查看完整回答
反对 回复 2023-05-09
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

这是完整的工作代码,我在 Windows 机器上用 Pycharm 社区版 IDE 测试了它


from selenium import webdriver

from selenium.webdriver.firefox.options import Options

from webdriver_manager.firefox import GeckoDriverManager

options = Options()

options.headless = True

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(),firefox_options=options)

driver.get("https://google.com")

print('Done')

driver.quit()


查看完整回答
反对 回复 2023-05-09
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

这是完整的工作代码,我在 Windows 机器上用 Pycharm 社区版 IDE 测试了它


from selenium import webdriver

from selenium.webdriver.firefox.options import Options

from webdriver_manager.firefox import GeckoDriverManager

options = Options()2022 年使用 Service 对象的工作尝试:


from selenium import webdriver

from selenium.webdriver.firefox.service import Service

from selenium.webdriver.firefox.options import Options

from webdriver_manager.firefox import GeckoDriverManager


options = Options()

options.add_argument('--headless')


driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()),options=options)

driver.get("https://www.google.com")

print('Done')

driver.quit()

options.headless = True

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(),firefox_options=options)

driver.get("https://google.com")

print('Done')

driver.quit()


查看完整回答
反对 回复 2023-05-09
  • 5 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信