Wie kann ich diesen IOError beheben: [Errno Socket-Fehler] [Errno 11004]?

Diese einfache Python 3 Skript:

import urllib.request host = "scholar.google.com" link = "/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0" url = "http://" + host + link filename = "cite0.bib" print(url) urllib.request.urlretrieve("http://scholar.google.com" + url, filename) 

Hebt diese Ausnahme an:

 Traceback (most recent call last): File "C:/Users/ricardo/Desktop/Google-Scholar/BibTex/test2.py", line 8, in <module> urllib.request.urlretrieve("http://scholar.google.com" + url, filename) File "C:\Python32\lib\urllib\request.py", line 150, in urlretrieve return _urlopener.retrieve(url, filename, reporthook, data) File "C:\Python32\lib\urllib\request.py", line 1569, in retrieve fp = self.open(url, data) File "C:\Python32\lib\urllib\request.py", line 1541, in open raise IOError('socket error', msg).with_traceback(sys.exc_info()[2]) File "C:\Python32\lib\urllib\request.py", line 1537, in open return getattr(self, name)(url) File "C:\Python32\lib\urllib\request.py", line 1715, in open_http return self._open_generic_http(http.client.HTTPConnection, url, data) File "C:\Python32\lib\urllib\request.py", line 1695, in _open_generic_http http_conn.request("GET", selector, headers=headers) File "C:\Python32\lib\http\client.py", line 967, in request self._send_request(method, url, body, headers) File "C:\Python32\lib\http\client.py", line 1005, in _send_request self.endheaders(body) File "C:\Python32\lib\http\client.py", line 963, in endheaders self._send_output(message_body) File "C:\Python32\lib\http\client.py", line 808, in _send_output self.send(msg) File "C:\Python32\lib\http\client.py", line 746, in send self.connect() File "C:\Python32\lib\http\client.py", line 724, in connect self.timeout, self.source_address) File "C:\Python32\lib\socket.py", line 386, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): IOError: [Errno socket error] [Errno 11004] getaddrinfo failed 

Ich kann die URL öffnen, die sich aus der print ergibt:

Http://scholar.google.com/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=de&as_sdt=1,14&ct=citation&cd=0

Was verursacht das? Ich habe versucht, http:// zu http:/// (drei Schrägstriche) zu wechseln, aber die gleiche Ausnahme wird angehoben.

  • Python: URLError: <urlopen error [Errno 10060]
  • Warum habe ich unordentlich Charaktere beim Öffnen von url mit urllib2?
  • Urllib2 basic authentication oddites
  • Python Bilder mit Alernating Variablen herunterladen
  • Wie melde ich mich automatisch an gmail atom feed mit Python?
  • Python3-Fehler: initial_value muss str oder None sein
  • Python 3.2: urllib, SSL und TOR durch Sockel: Fehler mit Fileno-Funktion
  • Python urllib urlopen funktioniert nicht
  • One Solution collect form web for “Wie kann ich diesen IOError beheben: [Errno Socket-Fehler] [Errno 11004]?”

    Hier ist dein Problem:

     urllib.request.urlretrieve("http://scholar.google.com" + url, filename) 

    Sie fügen den http://scholar.google.com Teil zweimal hinzu (die url startet bereits http://scholar.google.com ). Deshalb urillib denkt, du urillib eine Seite auf scholar.google.comhttp – unnötig zu sagen, diese Domain existiert nicht. Welches ist genau das, was dein Fehler sagt.

    Bitte einfach die url anfordern.

    Handlicher Hinweis, um diese Art von Dingen schneller in der Zukunft zu finden: Beim Hinzufügen einer print zum Debuggen, achten Sie darauf, den tatsächlichen Wert zu drucken, den Sie in dem Befehl verwenden, den Sie debuggen. Sie hätten dies in etwa zwei Sekunden gefunden, wenn Ihre print auch die Basis-URL verkettet hatte.

    Python ist die beste Programmiersprache der Welt.