关于dnspython和pycharm IDE

来源:互联网 发布:掌门集团 知乎 编辑:程序博客网 时间:2024/06/08 08:37

先介绍一下pycharm。
pycharm作为python的IDE,提供了强力的debug。
你可以在官网下载pycharm的安装包
安装pycharm需要事先安装jdk
pycharm为了调试接下来的问题所准备的

之前我介绍了dnspython模块,由于我使用的腾讯云是centos最小化安装,所以无法安装IDE。所以这次调试是在window下进行的。window如何安装dnspython。
根据简易性我们选择源码安装。
官网在官网下载源码包,解压后。
win + r 快捷键
输入cmd回车
进入解压目录
python setup.py install
安装完毕。

接下来引出问题。

import dns.resolver
domain = raw_input('please input an domain:')
A = dns.resolver.query(domain,"A")
for i in A.response.answer:
for j in i.items:
print j.address

注意代码的缩进markdown下的代码块是不缩进的。
这里写图片描述
ctrl + shift + F10运行
这里写图片描述
输入www.google.com基本无错误
但是输入www.baidu.com报错
这里写图片描述
从错误提示中我们可以看出来CNAME对象没有address这个属性。
根据我们上一篇博客中写的
CNAME 是rdtype参数用来指定RR资源类型。
CNAME记录,别名记录,实现域名间的映射。
query(self, qname, rdtype=1, rdclass=1, tcp=False, source=None, raise_on_no_answer=True, source_port=0)
接下来我们进行调试
ctrl + shift + F9快捷键进入debug

根据报错 是在A.response.answer中没有某个属性所以我们先去A.response.answer看看
这里写图片描述
发现A.response.answer列表里有2个元素。
一个是CNAME类型的
一个是A类型的
那我们分别看一下CNAME类型和A类型中items的属性
CNAME中
这里写图片描述
的确没有address的属性
A中
这里写图片描述
有address的属性。
那修改的方法就好办了
在内层循环中添加一个条件
if j.rdtype == 1:
print j.address
else:
pass

这里写图片描述
运行结果。这里写图片描述

0 0
原创粉丝点击