Python3使用python-whois批量查询域名仅最后一条返回其余为NULL问题问询
问题根源
- 你使用
readlines()读取文件行时,除最后一行外,其余每一行末尾都会自带换行符\n,传入whois.whois()的域名实际附带了无效的换行后缀,无法被正确识别,因此返回空结果。 - 部分场景下还可能存在域名前后有多余空格、制表符的问题,也会导致查询失败。
修复方案
只需要在读取每行内容后调用strip()方法,去除首尾的空白字符(包含换行符、空格、制表符)即可,修正后的核心代码如下:
import whois import os with open("dominios.txt", "r") as archivo: for linea in archivo.readlines(): # 去除首尾空白字符 dominio_consulta = linea.strip() # 额外加一层非空判断,跳过空行避免无效查询 if not dominio_consulta: continue w = whois.whois(dominio_consulta) registrador = 'PDR Ltd. d/b/a PublicDomainRegistry.com' whoiSer = 'whois.publicdomainregistry.com' serverWhois = w.whois_server expiracion = w.expiration_date creacion = w.creation_date dominio = w.name destFile = r"act.txt" print(str(w)) # with open(destFile, 'a') as f: # f.write(str(w)+"\n")
额外优化建议
- 你代码中重复赋值
serverWhois的语句属于冗余代码,可以删除不影响运行。 - 可以添加异常捕获逻辑,避免个别域名查询失败导致整个脚本终止运行。
- 可以增加查询间隔,避免短时间内查询量过大被whois服务器限制IP访问。
内容的提问来源于stack exchange,提问作者Isaac Lovera
相关产品推荐
相关产品推荐

