2017-06-16 6 views
1

Ich schreibe ein Skript, das den kompletten Inhalt einer Webseite speichert. Wenn ich versuche, urllib2 und bs4 zu verwenden, schreibt es nur den Inhalt der Anmeldeseite und keinen Inhalt, nachdem ich zu einer Suche innerhalb der Seite navigiert habe. Wenn ich jedoch auf der Suchergebnisseite eine Strg + S-Taste drücke, wird eine HTML-Datei auf der Festplatte gespeichert, die beim Öffnen in einem Texteditor alle Inhalte aus den Suchergebnissen enthält.Nachricht: 'Geckodriver' ausführbare Datei muss in PATH sein, aber es ist bereits?

Ich habe zu diesem Thema mehrere Beiträge hier gelesen und ich versuche, die Schritte in diesem zu verwenden:

How to save "complete webpage" not just basic html using Python

jedoch nach der Installation von geckodriver und Einstellen der sys Pfadvariablen I Fehler erhalten fortsetzen . Hier ist mein begrenzter Code:

from selenium import webdriver 
>>> from selenium.webdriver.common.action_chains import ActionChains 
>>> from selenium.webdriver.common.keys import Keys 
>>> br = webdriver.Firefox() 

Hier wird der Fehler:

Traceback (most recent call last): 
    File "<interactive input>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 142, in __init__ 
    self.service.start() 
    File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start 
    os.path.basename(self.path), self.start_error_message) 
WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

Und hier ist, wo ich die sys Pfadvariablen gesetzt:

enter image description here

ich neu gestartet habe nach Sys Pfad Variable setzen.

UPDATE:

ich jetzt versuchen, die chromdriver zu verwenden, wie dies gerade nach vorne schien. Ich heruntergeladen hromedriver_win32.zip II'm auf einem Windows-Laptop) von chromedriver Download-Seite, stellen Sie den environmetal Variable Pfad: C: \ Python27 \ Lib \ site-packages \ Selen \ WebDriver \ chrome \ chromedriver.exe

aber ich erhalte die ähnlichen folgenden Fehler:

>>> br = webdriver.Chrome() 
Traceback (most recent call last): 
    File "<interactive input>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 62, in __init__ 
    self.service.start() 
    File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start 
    os.path.basename(self.path), self.start_error_message) 
WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home 

Antwort

0

Sie haben auch den Weg des Firefox zu den Systemvariablen manuell hinzufügen, Sie vielleicht installiert haben firefox einige andere Stelle, während Selen versucht, Firefox zu finden und den Start von Standard Lage, aber es konnte nicht finden. Sie müssen ausdrücklich firefox installierten Binär-Speicherort zur Verfügung stellen:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

binary = FirefoxBinary('path/to/installed firefox binary') 
browser = webdriver.Firefox(firefox_binary=binary) 
browser = webdriver.Firefox() 
+0

@DL immer noch die gleiche Nachricht. Ich gehe zu Einstellungen-> Erweitert-> Umgebungsvariablen-> Pfad hinzugefügt C: \ Python27 \ selen \ webdriver \ firefox \ geckodriver-v0.17.0-win64 \ geckodriver.exe und C: \ Programme (x86) \ Mozilla Firefox \ firefox.exe – ShaunO

+0

@ShaunO und das ist in Ordnung, aber der Pfad zu Firefox binär wo ist es? Sie müssen suchen, wo Firefox installiert ist und eine Variable dafür machen :). Zum Beispiel werfen Sie einen Blick darauf https://stackoverflow.com/questions/40208051/selenium-using-python-geckodriver-executable-needs-to-be-in-path –

+0

@ShaunO auch Blick auf diesen Kerl, hat eine ähnliche https://github.com/mozilla/geckodriver/issues/90 –

Verwandte Themen