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

标签 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中有没有办法从这个链接获取IP地址'https://www.facebook.com/ ' 不检索 www.facebook.com ?

最佳答案

您可以使用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

关于python - 如果我有完整的 url,如何使用函数 socket.gethostbyname 获取 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171276/

相关文章:

python - 在 python @patch 装饰器中使用 self

python - 在 python 中同时剥离和拆分

python - 无法使用自定义小部件更改可检查 QListViewItem 的状态

linux - Linux 中的 TIPC 套接字类型

Python subprocess.Popen() - 子进程导致套接字保持打开状态

c# - 这个套接字监听器真的在多线程级别上处理吗?

python - ImportError:无法从 'is_directory' 导入名称 'PIL._util' (/usr/local/lib/python3.7/dist-packages/PIL/_util.py)

python - 如何检查文件夹是否存在然后将其删除?

C 中的客户端和服务器 send() 和 recv()

python - 搭建python与smalltalk通信的桥梁