2017-01-07 54 views
2

所以我试图抓取一个使用JavaScript来显示一些文本的网站。我发现我应该使用硒WebDrivers代替requests.get(),所以我试图用PhantomJS webdriver的,然而,这没有工作的,每当我试图凑这个网站它会成功地刮它,但该网站会生成HTML沿着这条线:Python - Firefox Selenium'预期的浏览器二进制位置,但无法在默认位置找到二进制'

<p>Could not find page</p> 

所以我猜测WebDriver工作不正常。我现在试图使用FireFox WebDriver - Geckodriver。该.exe文件的路径是在我的道路,但是当我在Python

browser = webdriver.Firefox() 

运行此命令它吐出来的“中找不到PATH指定geckodriver.exe”的错误。因此,而不是说,我用executable_path参数在Firefox(),所以它看起来是这样的:

browser = webdriver.Firefox(executable_path='path/to/geckodriver/') 

当我现在运行它,它会打开geckodriver.exe(不显示命令提示符屏幕上的任何东西)和吐出这个错误在IDLE:

WebDriverException: Message: Expected browser binary location, but unable to  find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line. 

但是,当我尝试使用ChromDriver它工作正常。我不明白为什么这个工程和别人不?

问题

  1. 为什么不PhantomJS工作?
  2. 为什么不GeckoDriver工作?
  3. 为什么ChromeDriver工作?

回答

0

该错误消息实际上是关于浏览器二进制文件,但不是关于geckodriver。尝试使用以下内容:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

binary = FirefoxBinary('path/to/firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary)