0

我正在尝试使用 gethostbyname 为网站制作 IP 解析器,这是我得到的错误:

File "wexec.py", line 39, in hell
  ipname = socket.gethostbyname('http://%s') % (hcon)
socket.gaierror: [Errno 11004] getaddrinfo failed

我试图修复它并尝试放置('www.youtube.com')然后它起作用了。我不确定我做错了什么。但这是我的代码:

def hell():

    hcon = raw_input(Fore.RED + Style.BRIGHT + "Website: ")
    urlopen = urllib2.urlopen('http://%s:80' % (hcon))  
    ipname = socket.gethostbyname('http://%s') % (hcon)
    print(strftime("[%H:%M:%S]", gmtime()) + " Found IP: %s " % (ipname))
    enter = raw_input("Press enter or any other key to continue.")

hell()

那我该怎么办?有人可以帮忙吗?

4

2 回答 2

0

这条线

ipname = socket.gethostbyname('http://%s') % (hcon)

你正在传递"http://%s"gethostbyname

尝试这个:

ipname = socket.gethostbyname('http://%s' % hcon)
于 2013-07-31T22:01:01.847 回答
0

首先,您的包围有点偏离。而不是:

ipname = socket.gethostbyname('http://%s') % (hcon)

它应该是:

ipname = socket.gethostbyname('http://%s' % (hcon))

通过关闭对gethostbynameearly 的调用,您阻止了%s字符串格式化的发生,这意味着名称包含文字 %s而不是hcon.

我也不确定您是否应该包含http://在您的主机名中。主机名与 URL 不同。您可能希望从前面删除 URL 类型,在这种情况下,您不妨将其简化为:

ipname = socket.gethostbyname(hcon)
于 2013-07-31T22:01:56.313 回答