V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
anywalker707
V2EX  ›  Python

python3 调用 resolver 错误

  •  
  •   anywalker707 · 2018-05-04 19:20:06 +08:00 · 2701 次点击
    这是一个创建于 2387 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想获取一条 url 的全部 CName,网上找到一段代码:
    from dns import resolver

    ans = resolver.query("www.chinacache.com", "A")
    print("qname:",ans.qname)
    print ("reclass:",ans.rdclass)
    print ("rdtype:",ans.rdtype)
    print ("rrset:",ans.rrset)
    print ("response:",ans.response)
    经 pycharm 编译后报错:

    Traceback (most recent call last):
    File "D:/OneDrive/Kingsoft/Python/Sublime_workspace/1.py", line 4, in <module>
    ans = resolver.query("www.baidu.com", "A")
    File "C:\Program Files\Python36\lib\site-packages\dns\resolver.py", line 1132, in query
    raise_on_no_answer, source_port)
    File "C:\Program Files\Python36\lib\site-packages\dns\resolver.py", line 1051, in query
    raise NXDOMAIN(qnames=qnames_to_try, responses=nxdomain_responses)
    dns.resolver.NXDOMAIN: None of DNS query names exist: www.baidu.com., www.baidu.com.ksyun.com., www.baidu.com.192.168.12.18., www.baidu.com.192.168.12.19., www.baidu.com.114.114.114.114., www.baidu.com.ksyun.com., www.baidu.com.192.168.12.18., www.baidu.com.192.168.12.19., www.baidu.com.114.114.114.114., www.baidu.com.kingsoft.cn.
    2 条回复    2018-05-04 20:41:33 +08:00
    DevNet
        1
    DevNet  
       2018-05-04 19:50:43 +08:00
    dns.resolver.query('www.baidu.com', 'CNAME').response.answer[-1].items[-1].to_text()
    获取全部的话,两个列表可以循环一下~

    import dns.resolver

    domain=raw_input('please input an domain:')

    ns=dns.resolver.query(domain,'CNAME')

    for i in ns.response.answer:

    for j in i.items:

    print j.to_text()
    anywalker707
        2
    anywalker707  
    OP
       2018-05-04 20:41:33 +08:00
    可能是系统的问题
    我的是 window10,报错;代码 copy 到一个苹果电脑上可以,但是只返回第一个 Cname
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:58 · PVG 17:58 · LAX 01:58 · JFK 04:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.