Python 由网址得到 ip 地址

       (创作不易,记得点个赞哦)

         在信息时代,我们常要由网址得到ip地址。我在网上找了实现它的方法十几分钟,要么无法运行,要么太过臃肿。于是我灵光一闪,想到了一个简单的方法。

        由于socket模块的gethostbyname函数只能接收主机名, 所以先写一个从网址中获取主机名的函数。

        一个正常的网址,总由几个部分构成:

        <协议>://<服务器类型> . <域名>/<目录>/<文件名>

        如https://www.baidu.com/, https://www.csdn.net/

        而我们所需要的主机名,就是中间这一串:

        <服务器类型> . <域名>

        即www.baidu.com, www.csdn.net

        可以发现,主机名就在第一个“//”和第一个“/”中间。据此,我们可以轻易地编写一个函数从网址中分离出主机名。

def gethost(url):
    output = ''
    if '//' in url:
        output = url.split('//')[1]
        if '/' in output:
            output = output.split('/')[0]
    elif '/' in url:
        output = url.split('/')[0]
    return output

        这是一个简单的函数, 仅在输入的网址比较正常时能达到预期。但是处理从浏览器上复制粘贴的网址足够用了。如有需要,对它进行封装,或者可以使用正则表达式完成分离主机名的工作。

        然后把返回值带入gethostbyname中就得到结果了.。

        完整程序如下:

from socket import gethostbyname

def gethost(url):
    output = ''
    if '//' in url:
        output = url.split('//')[1]
        if '/' in output:
            output = output.split('/')[0]
    elif '/' in url:
        output = url.split('/')[0]
    return output

def getip(url):
    return gethostbyname(gethost(url))

        调用getip函数即可由网址得到ip。

        测试如下:

url = (
    'https://www.baidu.com/',
    'https://www.csdn.net/',
    'https://mirrors.tuna.tsinghua.edu.cn/#'
)

for i in url:
    print(i, getip(i))

        结果:

f505137e49574aefb09552f482929cab.png

参考资料:

百度百科-验证

猜你喜欢

转载自blog.csdn.net/m0_71713477/article/details/127174636