今天在家里搞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跟模块冲突了。小错误坑!
以上就是我在学习遇到的问题。