Python中dnspython库的基本应用

作用:

dnspython 是一个用于在 Python 中进行 DNS查询和操作的第三方库。它提供了丰富的功能,允许开发者在 Python 程序中方便地与 DNS 服务器进行交互,实现域名解析、DNS 记录查询等操作。

DNS:

DNS 缓存(Domain Name System Cache)是一种机制,用于存储 DNS 查询的结果,以减少对 DNS 服务器的重复查询,提高域名解析的效率和网络访问速度。当用户或应用程序需要访问一个域名时,系统会首先检查本地的 DNS 缓存中是否已经存在该域名对应的 IP 地址,如果存在且未过期,就直接使用缓存中的 IP 地址进行访问,而无需再次向 DNS 服务器发送查询请求。

dns.resolver.resolve

基本语法:

dns.resolver.resolve(qname, rdtype=dns.rdatatype.A)
  • qname:必选参数,是一个字符串,代表要查询的域名,例如 "example.com"

  • rdtype:可选参数,指定查询的资源记录类型,默认值为 dns.rdatatype.A,即查询 A 记录(用于将域名解析为 IPv4 地址)。常见的资源记录类型有:

    • dns.rdatatypeA : 查询IPv4地址

    • dns.rdatatypeAAAA:查询 IPv6 地址。

    • dns.rdatatype.MX:查询邮件交换记录。

    • dns.rdatatype.CNAME:查询规范名称记录。返回值

返回值:

  • dns.resolver.resolve 方法返回一个 dns.resolver.Answer 对象,该对象包含了 DNS 查询的结果。可以通过遍历这个对象来获取具体的资源记录信息。

例子:

域名查询(A 记录查询)

import dns.resolver
a = dns.resolver.resolve("www.hzau.edu.cn",'A')
ip = a.response.answer[0].to_text().split(" ")[-1]
print("华中农业大学主页的IP地址:" + ip)
#华中农业大学主页的IP地址:​202.114.33.100
IPv4地址
  • 域名:要解析的目标域名(例如 www.hzau.edu.cn)。
  • IN:表示 Internet 类别,是 DNS 记录的标准分类。
  • A:记录类型,表示 IPv4 地址映射。
  • IP地址:域名对应的 IPv4 地址(例如 123.45.67.89)。

假设 DNS 查询返回以下结果:

    www.hzau.edu.cn. IN A 202.114.33.100
    
    • 域名www.hzau.edu.cn.(末尾的 . 表示根域,通常可省略)。
    • 记录类型A
    • IP 地址202.114.33.100

    思考:在获取域名和IP地址的对应关系后,用数组和列表的形式来维护这 些关系,实现爬虫自己的DNS缓存。

    import dns.resolver
    a = dns.resolver.resolve("www.hzau.edu.cn",'A')
    ips = [a.to_text().split(" ")[-1] for a in a.response.answer]
    for ip in ips:
        print(ip)

    列表推导式整体结构

    ips = [expression for item in iterable]
    
     

    这是 Python 列表推导式的通用结构,它能够简洁地创建一个新列表。在这个结构里:

     
    • expression 是对每个元素进行处理的表达式。
    • item 是从可迭代对象中取出的元素。
    • iterable 是一个可迭代对象,像列表、元组、集合等。
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值