如果我有完整的网址,如何使用socket.gethostbyname函数获取IP地址?

时间:2019-01-13 17:16:54

标签: python sockets

我需要获取网站的IP地址,例如“ https://www.facebook.com/

此代码返回IP地址:

ip_address = socket.gethostbyname('www.facebook.com')
print('ip_address = ', ip_address) # prints 185.60.216.35

但是此代码:

  ip_address = socket.gethostbyname('https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110')

引发异常:

socket.gaierror: [Errno -2] Name or service not known

python中是否有任何方法可以从此链接“ https://www.facebook.com/”获取IP地址而不检索www.facebook.com?

1 个答案:

答案 0 :(得分:2)

您可以使用urllib.parse.urlsplit从域中获取主机名,然后获取IP地址。

urlsplit返回一个namedtuple,其netloc属性是主机名。

>>> import socket
>>> from urllib import parse
>>> url = 'https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110'
>>> split_url = parse.urlsplit(url)
>>> ip_address = socket.gethostbyname(split_url.netloc)

>>> print(ip_address)
157.240.1.35
相关问题