2014-05-10 2 views
19

Ich habe Probleme mit Selenium und PhantomJS unter Windows7, wenn ich die Quelle der Seite einer URL erhalten möchte. browser.page_source gibt nur <html><head></head></html> zurück. Ich habe vor browser.page_source geschlafen, aber es hat nicht geholfen.Python: Selen mit PhantomJS leere Seite Quelle

Dies ist mein Code:

from selenium import webdriver 
browser = webdriver.PhantomJS('phantomjs-1.9.7-windows\phantomjs.exe') 
url = 'myurl' 
browser.get(url) 
print browser.page_source 

Unter Linux mit der gleichen Version von PhantomJS es perfekt funktioniert. Es funktioniert auch unter Windows Server 2003.

+0

einige Debug-Versuchen, einen Screenshot zum Beispiel –

+2

Der Screenshot ist leer, leer Bild aufzunehmen. Ich dachte, dass es ein Problem mit PhantomJS ist und ich habe versucht, die Seite mit PyQt4 Webkit zu laden, aber das Ergebnis ist das gleiche, nur und Tags. Dies ist die URL, die mir Kopfschmerzen bereitet: https://www.homesearch.com/browse?fulltextquery=miami+fl&page=0 –

+0

Ich habe das gleiche Problem bei der Navigation zu einigen _https_: // URL gefunden. Verwenden Sie 'time.sleep (few_seconds)' 'oder webdrivers [erwartete Bedingungen] (http://selenium-python.readthedocs.org/en/latest/api.html#selenium.webdriver.support.expected_conditions.presence_of_element_located), um auf einige zu warten Element, das nach Aufruf von 'browser.get (url)' –

Antwort

31

Standardmäßig verwenden Phantomjs SSLv3, aber viele Websites nach Fehler in SSL migrieren zu TLS. Deshalb haben Sie eine leere Seite. verwenden service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any']

browser = webdriver.PhantomJS('phantomjs-1.9.7-windows\phantomjs.exe', service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any']) 
+0

Upvoted dies, weil nur die Verwendung der Ignorieren ssl-Fehler für mich funktioniert, aber Hinzufügen von ssl-Protokoll jede vorgeschlagene von diesem Kommentar Hilfe. Kudos – freonix

+0

Ich wünschte, ich könnte dies mehr als einmal upvote – valignatev

+0

Beachten Sie, dass '--ignore-ssl-Fehler' ist gefährlich und Sie sollten es nicht verwenden, wenn Sie wissen, was Sie tun. Die andere Option wird wahrscheinlich die meisten Probleme beheben. –

8

Mit service_args=['--ignore-ssl-errors=true'] tat der Trick!

1
driverPhantom = webdriver.PhantomJS(driverLocation, service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])  # initaling web driver for PhantomJs 

für mich gearbeitet.

0

die Bildschirmgröße für mich gearbeitet, wie unten zu erhöhen:

driver = webdriver.PhantomJS(path2phantom, service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any']) 
driver.set_window_size(2000, 1500)