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