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

504次阅读
没有评论

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

【环境】:Python3 环境

1. 安装 dns 模块

pip3 install dnspython3

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

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)

运行查询:

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

优化

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()))

效果如下

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

ImportError: No module named dns.exception

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

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

 

 

 

 

正文完
 
ddn
版权声明:本站原创文章,由 ddn 2017-06-25发表,共计961字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。