web-dev-qa-db-fra.com

urllib2.URLError: <erreur urlopen [Errno 11004] getaddrinfo a échoué>

Si je cours:

urllib2.urlopen('http://google.com')

même si j'utilise une autre URL, j'obtiens la même erreur.

Je suis à peu près sûr qu'il n'y a pas de pare-feu sur mon ordinateur ou mon routeur et qu'Internet (à partir d'un navigateur) fonctionne correctement.

14
quilby

Le problème, dans mon cas, était que certaines installations définissaient à un moment donné une variable d’environnement http_proxy sur ma machine alors que je n’avais pas de proxy. 

Supprimer la variable http_proxy environment a résolu le problème.

5
Declan Brennan

L'enregistrement DNS du site est tel que Python échoue de manière particulière dans la recherche DNS: il trouve l'entrée, mais aucune adresse IP associée. (Vérifiez avec nslookup.) Par conséquent, 11004, WSANO_DATA .

Préfixez le site avec 'www.' et essayez à nouveau la demande. (Utilisez nslookup pour vérifier que le résultat est différent également.)

Cela échoue essentiellement de la même manière avec le module Python Requests :

requests.exceptions.ConnectionError: HTTPConnectionPool (Host = '...', port = 80): Nombre maximal de tentatives dépassé avec l'url:/(provoqué par: [Errno 11004] getaddrinfo a échoué

4
JimB

Vous devrez probablement utiliser un proxy. Vérifiez les paramètres de votre navigateur habituel pour savoir lequel. Jetez un oeil sur l'ouverture de sites Web à l'aide de urllib2 derrière un pare-feu d'entreprise - 11004, échec de getaddrinfo pour un problème similaire de solution.,

1
xeor

Cela ne vous aidera peut-être pas s'il s'agit d'un problème réseau, mais vous pouvez obtenir des informations de débogage en définissant debuglevel sur httplib. Essaye ça:

import urllib, urllib2, httplib

url = 'http://www.mozillazine.org/atom.xml'
httplib.HTTPConnection.debuglevel = 1

print "urllib"

data = urllib.urlopen(url);

print "urllib2"

request = urllib2.Request(url)
opener = urllib2.build_opener()
feeddata = opener.open(request).read()

Ce qui est copié directement à partir d’ici, espérons que ce sera casher: http://bytes.com/topic/python/answers/517894-getting-debug-urllib2

1
beer_monk

Pour résoudre le problème:

  1. laissez-nous savoir sur quel système d'exploitation le script est exécuté et quelle version de Python
  2. Dans l'invite de commande sur le même ordinateur, exécutez ping google.com et observez si cela fonctionne (ou si vous dites "impossible de trouver l'hôte")
  3. Si (2) fonctionne, ouvrez le navigateur sur cette machine (essayez dansC'EST-&AGRAVE;-DIREsi sous Windows) et essayez d'ouvrir "google.com" ici. En cas de problème, examinez attentivement les paramètres de proxy dans Options Internet/Connexions/Paramètres réseau.

Dites-nous comment ça se passe dans les deux sens.

1
Nas Banov

ajoutez s à l'adresse http i.e urllib2.urlopen (' https://google.com ')

a travaillé pour moi

0
tekstar