如何使用dnspython获取并返回字符串格式的A记录IP地址?
解决dnspython返回对象而非字符串数组的问题
我来帮你搞定这个问题哈~你现在输出的是dns.resolver.Answer对象,是因为resolver.query()返回的不是直接的IP字符串集合,而是封装了DNS查询结果的对象。咱们只需要遍历这个对象,把每个A记录对应的IP提取出来转成字符串,就能得到想要的字符串数组啦。
修改后的可用代码
import dns.resolver def resolveDNS(): domain = "google.com" resolver = dns.resolver.Resolver() # 执行A记录查询 answer = resolver.query(domain, "A") # 遍历结果,把每条记录转成IP字符串并存入列表 ip_list = [str(record) for record in answer] return ip_list resultDNS = resolveDNS() print(resultDNS)
简单说明
dns.resolver.query()返回的Answer对象是可迭代的,每一项都是对应A记录的实例,直接转成字符串就能拿到IP地址- 用列表推导式快速把所有IP收集成字符串数组,返回后打印就能看到类似
['142.250.185.14', '2607:f8b0:4005:806::200e']的结果(具体IP会根据你的网络环境变化)
另外提一句,如果你的dnspython是2.0及以上版本,官方推荐用resolver.resolve()替代query(),用法几乎一样,修改后的代码如下:
import dns.resolver def resolveDNS(): domain = "google.com" resolver = dns.resolver.Resolver() # 使用官方推荐的resolve方法 answer = resolver.resolve(domain, "A") ip_list = [str(record) for record in answer] return ip_list resultDNS = resolveDNS() print(resultDNS)
这样就能完美得到你想要的字符串数组形式的IP结果啦~
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

