whois.whois(domain)在for循环中无法返回域名注册商问题排查
问题原因
- 核心原因:逐行读取txt文件时,除最后一行外的所有行末尾都带有隐式换行符
\n,你直接将未做清洗的字符串传入whois.whois()接口,带换行的域名属于非法格式,查询直接失败返回空,只有无换行符的最后一条域名能正常查询得到结果。 - 次要诱因:部分whois库默认开启查询缓存,或是未设置查询间隔触发whois服务器限流,也会导致前面的查询无返回。
修复方案
你只需要在读取每行后调用strip()方法去除首尾空白字符(包含换行符、空格等),同时增加简单的错误捕获和查询间隔即可,修复后代码如下:
import whois import time with open("domenytxt.txt", "r", encoding="utf-8") as a_file: for line in a_file: # 去除首尾空白、换行符,跳过空行 domain = line.strip() if not domain: continue try: rejestr = whois.whois(domain).registrar print(f"{domain}: {rejestr}") except Exception as e: print(f"{domain} 查询失败: {str(e)}") # 加1秒间隔防止被whois服务器限流 time.sleep(1)
内容的提问来源于stack exchange,提问作者radkar
相关产品推荐
相关产品推荐

