2011-01-27 12 views
9

Tengo una cadena que representa un nombre de dominio. ¿Cómo puedo obtener la dirección IP correspondiente usando Python 3.x? Algo como esto:¿Cómo obtengo la dirección IP de un sitio web usando Python 3.x?

>>> get_ip('http://www.stackoverflow.com') 
'64.34.119.12' 
+2

posible duplicado de [¿Cómo resolver DNS en Python?] (Http://stackoverflow.com/questions/3837744/how-to-resolve-dns-in-python) –

Respuesta

7
>>> import socket 

>>> def get_ips_for_host(host): 
     try: 
      ips = socket.gethostbyname_ex(host) 
     except socket.gaierror: 
      ips=[] 
     return ips 

>>> ips = get_ips_for_host('www.google.com') 
>>> print(repr(ips)) 
('www.l.google.com', [], ['74.125.77.104', '74.125.77.147', '74.125.77.99']) 
10
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32 
>>> import socket 
>>> socket.gethostbyname('cool-rr.com') 
'174.120.139.162' 

Tenga en cuenta que:

  • gethostbyname() no funciona con IPv6.
  • gethostbyname() usa la llamada C gethostbanme(), que está en desuso.

Si estos son problemáticos, use socket.getaddrinfo() en su lugar.

6

La manera más fácil es usar socket.gethostbyname(). Sin embargo, esto no es compatible con IPv6 y se basa en la llamada en desuso C gethostbanme(). Si le importan estos problemas, puede usar el más versátil socket.getaddrinfo().

Cuestiones relacionadas