在 python 中调用 Firefox webdriver
Calling the Firefox webdriver in python
我正在使用 Debian 9 Stretch 和 Pycharm IDE 并尝试学习网络抓取;我通过 运行ning:
安装了 Selenium 包
pip install selenium
以及 运行ning 的 Firefox 网络驱动程序:
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
tar -xvzf geckodriver-v0.19.1-linux64.tar.gz.1
chmod +x geckodriver
分别下载最后一个版本,解压并使驱动程序可执行。之后,我将驱动程序添加到以下路径:
usr/local/bin
我 运行 全部使用 Pycharm IDE 终端而不是内置的 Debian 终端。
为了打开 Firefox 和 web-scrape,我 运行:
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
最后一行给出错误信息作为输出:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 162, in __init__
keep_alive=True)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused
我在 Python 和网络抓取方面都是新手;请有人解释一下安装和编码出了什么问题以及为什么会出现此错误?
希望能清楚地提出问题,在此先感谢大家的帮助。
假设geckodriver的位置是正确的,您可以查看以下内容:
geckodriver 的属性应该具有正确的用户权限。您需要勾选方框 "Allow this file to run as a program" 或
如果您的访问权限受限,请将 geckodriver 保存在您的 home/username/geckodriver 中,然后将其指向您的 firefox。将其保存在您的主文件夹中将能够修改您的 geckodriver 的属性。
[编辑] 您的 运行 是在命令行中吗?如果是这样,你需要一个虚拟显示,我用过pyvirtualdisplay:
from pyvirtualdisplay import Display
display = Display(visible=0,size(800, 600))
display.start()
driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
在使用 Selenium-Python Client v3.10.0 along with GeckoDriver v0.19.1 和 Firefox v58.0.2 时,您必须初始化 WebDriver 实例并将其分配给变量,它将 in-turn 初始化 网络浏览器 ,它将 in-turn 打开所需的 URL,如下所示:
from selenium import webdriver
driver = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
driver.get('https://www.google.co.in')
print("Page Title is : %s" %driver.title)
driver.quit()
问题已通过删除 Mozilla Firefox 解决,在 Debian 9 中,Stretch 默认安装为 ESR(扩展版本支持);当时 Firefox ESR 版本是 52.0.
之后,我通过 运行ning 在终端上安装不稳定的 Firefox 版本(不是 Beta)来安装 super-user:
su -
gedit /etc/apt/sources.list
并将 deb http://ftp.it.debian.org/debian/ unstable main
添加到源列表文件。
之后,我运行:
apt-get update
apt-get install -t unstable firefox
更新软件并安装 Firefox。
按照问题中解释的指南安装和 运行 selenium Python 包,一切都应该可以正常工作(至少对我来说是这样!)。
希望这对其他用户也有帮助!
我正在使用 Debian 9 Stretch 和 Pycharm IDE 并尝试学习网络抓取;我通过 运行ning:
安装了 Selenium 包pip install selenium
以及 运行ning 的 Firefox 网络驱动程序:
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
tar -xvzf geckodriver-v0.19.1-linux64.tar.gz.1
chmod +x geckodriver
分别下载最后一个版本,解压并使驱动程序可执行。之后,我将驱动程序添加到以下路径:
usr/local/bin
我 运行 全部使用 Pycharm IDE 终端而不是内置的 Debian 终端。
为了打开 Firefox 和 web-scrape,我 运行:
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
最后一行给出错误信息作为输出:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 162, in __init__
keep_alive=True)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "/root/PycharmProjects/Example/venv/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused
我在 Python 和网络抓取方面都是新手;请有人解释一下安装和编码出了什么问题以及为什么会出现此错误?
希望能清楚地提出问题,在此先感谢大家的帮助。
假设geckodriver的位置是正确的,您可以查看以下内容:
geckodriver 的属性应该具有正确的用户权限。您需要勾选方框 "Allow this file to run as a program" 或
如果您的访问权限受限,请将 geckodriver 保存在您的 home/username/geckodriver 中,然后将其指向您的 firefox。将其保存在您的主文件夹中将能够修改您的 geckodriver 的属性。
[编辑] 您的 运行 是在命令行中吗?如果是这样,你需要一个虚拟显示,我用过pyvirtualdisplay:
from pyvirtualdisplay import Display
display = Display(visible=0,size(800, 600))
display.start()
driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
在使用 Selenium-Python Client v3.10.0 along with GeckoDriver v0.19.1 和 Firefox v58.0.2 时,您必须初始化 WebDriver 实例并将其分配给变量,它将 in-turn 初始化 网络浏览器 ,它将 in-turn 打开所需的 URL,如下所示:
from selenium import webdriver
driver = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
driver.get('https://www.google.co.in')
print("Page Title is : %s" %driver.title)
driver.quit()
问题已通过删除 Mozilla Firefox 解决,在 Debian 9 中,Stretch 默认安装为 ESR(扩展版本支持);当时 Firefox ESR 版本是 52.0.
之后,我通过 运行ning 在终端上安装不稳定的 Firefox 版本(不是 Beta)来安装 super-user:
su -
gedit /etc/apt/sources.list
并将 deb http://ftp.it.debian.org/debian/ unstable main
添加到源列表文件。
之后,我运行:
apt-get update
apt-get install -t unstable firefox
更新软件并安装 Firefox。
按照问题中解释的指南安装和 运行 selenium Python 包,一切都应该可以正常工作(至少对我来说是这样!)。
希望这对其他用户也有帮助!