我有一个表示域名的字符串。如何使用 Python 3.x 获取相应的 IP地址?像这样:
>>> get_ip('http://www.stackoverflow.com')
'64.34.119.12'
>>> 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'])
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()代替。
最简单的方法是使用socket.gethostbyname()
。但是,它不支持 IPv6,并且基于已弃用的 C 调用gethostbanme()
。如果您关心这些问题,可以改用更通用的socket.getaddrinfo()
。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(17条)