Python 3 中导入模块 whois 后仍无法正常工作

3
请检查安装并导入whois模块后获取的以下输出,有人可以帮助解决吗?
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import whois
>>> domain = whois.query('www.google.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/whois/__init__.py", line 50, in query
    pd = do_parse(do_query(d, force, cache_file, slow_down, ignore_returncode), tld)
  File "/usr/local/lib/python3.6/dist-packages/whois/_1_query.py", line 44, in do_query
    _do_whois_query(dl, ignore_returncode),
  File "/usr/local/lib/python3.6/dist-packages/whois/_1_query.py", line 58, in _do_whois_query
    p = subprocess.Popen(['whois', '.'.join(dl)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'whois': 'whois'
`

1
“whois” 模块只是 “whois” 命令的包装器。您可以从终端输入 which whois 并查看它找到了什么? - PaSTE
2个回答

6

首先,您可以通过以下命令手动进行 WHOIS 查询 whois google.com,如果出现错误,则需要使用 sudo apt-get install whois 安装 WHOIS 工具。


现在它可以工作了...但是显然无法按照我的要求获取任何正确的详细信息...你能为whois建议我另一个库吗? - IamBatman
没有其他更好的whois库,whois信息存储在中央whois数据库中,因此如果数据库没有提供足够的信息,库就无法做太多事情。由于域名注册机构的隐私政策和最近的GDPR文化,whois服务器隐藏了大部分域名的whois信息,例如电子邮件/电话/地址等。 - Tamim
WHOIS信息存储在中央WHOIS数据库中这句话是不准确的。每个管理顶级域名的注册机构都有一个包含其对象(主要是域名,但也包括联系人、主机等)的数据库,并且WHOIS是用于查询此类信息的协议。每个顶级域名都有一个相应注册机构管理的中央数据库。 - Patrick Mevzek
@suyash999 "你能为我推荐一个whois的替代库吗?" 有很多语言的库可供选择,但在这里建议不要讨论此话题。然而从技术上讲,使用一个不需要在系统上调用whois命令的库,因为这基本上是无用的。whois只是在TCP/43上进行简单的交换,所以库可以自己打开端口。 - Patrick Mevzek

0

我也遇到了同样的问题。我使用pip安装了whois库,但它并没有起作用。然后我尝试了

sudo apt-get install whois

重新安装整个模块,然后它就正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接