站点图标 星露谷值班站长

python学习之Dnspython模块,常见错误解决

今天在家里搞 Python3 学习 DNS 模块,中间研究出现了很多坑,不能说坑也是我自己作为一个新手犯得错误.

【环境】:Python3 环境

1. 安装 dns 模块

pip3 install dnspython3

2. 新建一个 py 文件 dns_test.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#by typ


import dns.resolver

domain = input('Please input an domain:')  #输入域名地址

A = dns.resolver.query(domain, 'A')  #查询记录为 A 记录
for i in A.response.answer:
    for j in i.items:
        print (j.address)

运行查询:

优化

import dns.resolver

domain = input('请输入域名:')

A = dns.resolver.query(domain, 'A')
for i in A.response.answer:
    for j in i.items:
        print ('域名:%s IP 地址为:%s' %(domain,j.address))

 

遇到的报错问题

AttributeError: ‘CNAME’ object has no attribute ‘address’

这个问题是因为查询的是 A 记录但是域名解析是 CNAME 导致的

我们更改脚本做 CNAME 解析就不会报错了

#!/usr/bin/python
# -*- coding: utf-8 -*-
#by typ

import dns.resolver

domain = input('请输入域名:')

cname = dns.resolver.query(domain, 'CNAME')
for i in cname.response.answer:
    for j in i.items:
        print ("域名:%s\nCNAME 记录:%s"%(domain,j.to_text()))

效果如下

ImportError: No module named dns.exception

这个问题提示找不到模块,问题困恼了我很长时间,明明安装了 dns 模块为什么提示找不到,为此我在 windows 上和 linux 上面都做了实验,发现都是这个报错,最后发现是因为我文件名字为 dns.py 跟模块冲突了。小错误坑!

以上就是我在学习遇到的问题。

 

 

 

 

退出移动版