Как получить IP-адрес веб-сайта с помощью Python 3.x? - PullRequest
9 голосов
/ 27 января 2011

У меня есть строка, представляющая доменное имя.Как я могу получить соответствующий IP-адрес с помощью Python 3.x?Как то так:

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

Ответы [ 3 ]

10 голосов
/ 27 января 2011
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'

Обратите внимание, что:

  • gethostbyname () не работает с IPv6 .
  • gethostbyname () использует C-вызов gethostbanme (), который устарел.

Если это проблематично, используйте вместо него socket.getaddrinfo ().

7 голосов
/ 27 января 2011
>>> 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'])
6 голосов
/ 27 января 2011

Самый простой способ - использовать socket.gethostbyname(). Однако он не поддерживает IPv6 и основан на устаревшем вызове C gethostbanme(). Если вы заботитесь об этих проблемах, вы можете использовать вместо них более универсальный socket.getaddrinfo().

...