ich beschäftige mich recht neu mit Python und bin auch hier im Forum zum ersten Mal, ich hoffe man kann mir hier helfen.
Es geht um folgendes Problem:
Mit meinem Python-Code erzeuge ich regelmäßig Screenshots von Webseiten mittels Selenium/PhantomJS.
Dazu nutze ich folgenden Code:
Code: Alles auswählen
# Download von Website mit Selenium und PhantomJS
# headless Webbrowser PhyntomJS
site = webdriver.PhantomJS()
# Website in PhantomJS oeffnen
site.get(self.url)
# Screenshot sichern
site.save_screenshot('pictures/' + self.title + '_new.png')
# Webbrowser schliessen
site.quit
Dann kommt das Skript bis zu dem site.get(url) und bleibt dann an der Stelle stehen (oder führt dauerhaft diesen Befehl aus).
Jedenfalls wird es dann nicht sauber beendet, sondern läuft die ganze Zeit weiter.
Kann ich in Python oder mit der Selenium-API irgendwie eine Timeout-Funktion einbauen, sodass er nach 10 Sek. abbricht, wenn die Seite bis dahin nicht geöffnet ist, bzw der Befehl bis dahin nicht fertig ausgeführt ist?
Muss das Skript dann mit strg-c beenden und dann ploppt folgende Fehlermeldung auf:
Code: Alles auswählen
^CTraceback (most recent call last):
File "results.py", line 76, in <module>
result = course.check()
File "/home/peter/results/course.py", line 77, in check
self.capture()
File "/home/peter/results/course.py", line 37, in capture
site.get(self.url)
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 248, in get
self.execute(Command.GET, {'url': url})
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 234, in execute
response = self.command_executor.execute(driver_command, params)
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/remote_connection.py", line 401, in execute
return self._request(command_info[0], url, body=data)
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/remote_connection.py", line 471, in _request
resp = opener.open(request, timeout=self._timeout)
File "/usr/lib/python3.4/urllib/request.py", line 455, in open
response = self._open(req, data)
File "/usr/lib/python3.4/urllib/request.py", line 473, in _open
'_open', req)
File "/usr/lib/python3.4/urllib/request.py", line 433, in _call_chain
result = func(*args)
File "/usr/lib/python3.4/urllib/request.py", line 1202, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/lib/python3.4/urllib/request.py", line 1177, in do_open
r = h.getresponse()
File "/usr/lib/python3.4/http/client.py", line 1172, in getresponse
response.begin()
File "/usr/lib/python3.4/http/client.py", line 351, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.4/http/client.py", line 313, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.4/socket.py", line 371, in readinto
return self._sock.recv_into(b)
KeyboardInterrupt
Vielen Dank im Voraus :)