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

参考资料:

 

百度百科-验证

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值