2017-04-22 5 views
-3

Ich versuche ein Skript zu schreiben und ein Teil davon muss prüfen, ob eine URL verfügbar ist oder nicht. Das Problem ist, dass, wenn ich eine Antwort zurückbekomme 200,404 usw. das Programm funktioniert gut und ich kann mit der Antwort umgehen, aber wenn die URL nicht erreichbar ist, geht das Programm in den Fehler unten. Dieser Teil des Codes ist:response = requests.get Fehler, wenn die URL nicht erreichbar ist

response = requests.get(url) 
print (response) 

Fehler:

Traceback (most recent call last): 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connection.py", line 141, in _new_conn 
    (self.host, self.port), self.timeout, **extra_kw) 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\util\connection.py", line 60, in create_connection 
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): 
    File "C:\Python\lib\socket.py", line 743, in getaddrinfo 
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 
socket.gaierror: [Errno 11001] getaddrinfo failed 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen 
    chunked=chunked) 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request 
    self._validate_conn(conn) 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn 
    conn.connect() 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connection.py", line 284, in connect 
    conn = self._new_conn() 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connection.py", line 150, in _new_conn 
    self, "Failed to establish a new connection: %s" % e) 
requests.packages.urllib3.exceptions.NewConnectionError: <requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x03EC9970>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed 

Gibt es eine Abhilfe für dieses? Wenn ich das Skript einstellen kann, um eine Zeile wie URL nicht verfügbar zu drucken und existiert wird großartig.

+1

Also nur [die Ausnahme abfangen] (https://docs.python.org/3/tutorial/errors.html#handling-exceptions)? Siehe den Abschnitt [* Fehler und Ausnahmen *] (http://docs.python-requests.org/en/master/user/quickstart/#errors-and-exceptions). Haben Sie das noch nicht gemacht? Hatten Sie Probleme herauszufinden, welche Ausnahme zu fangen ist? –

+1

Haben Sie erwogen, die Ausnahme zu fangen und zu behandeln? – mhawke

Antwort

1

Nur catch the exception. Die Errors and Exceptions section der requests Dokumentation zeigt sollten Sie in der Lage sein, die requests.ConnectionError exception hier zu fangen:

try: 
    response = requests.get(url) 
except requests.ConnectionError: 
    print("Can't connect to the site, sorry") 
else: 
    print(response) 

Schnell Demo mit einem nicht vorhandenen Host-Namen:

>>> import requests 
>>> try: 
...  response = requests.get("http://no_such_site_exists.imsure") 
... except requests.ConnectionError: 
...  print("Can't connect to the site, sorry") 
... else: 
...  print(response) 
... 
Can't connect to the site, sorry 
Verwandte Themen