Python使用主机名,主机名使用IP

时间:2014-01-02 09:56:00

标签: python string sockets

在python中我需要从主机名获取IP:

socket.gethostbyname('www.python.org') # returns ip good
socket.gethostbyname('http://python.org') # raises error

我需要处理以“http://”开头的主机名,所以我想出了一种方法来重新制作它们:

a = 'http://python.org'
a.replace('http://', 'www.')
print a # Why does it print http://python.org ???

我不确定我做对了。 Plz帮助我将这种类型的主机名转换为IP

3 个答案:

答案 0 :(得分:8)

您想要urlparse

>>> import urlparse
>>> urlparse.urlparse('http://python.org')
ParseResult(scheme='http', netloc='python.org', path='', params='', query='', fragment='')
>>> urlparse.urlparse('http://python.org').netloc
'python.org'
>>> 

哦,是的,您无需在顶级域名前添加任何“www”。

答案 1 :(得分:1)

你应该这样做,

a = 'http://python.org'
a = a.replace('http://', 'www.')  
# a.replace() does not change the original string. it returns a new string (replaced version).
print a

答案 2 :(得分:-1)

你有几个问题。

第一。引发错误,因为http://stuff不是有效域。期待错误是很自然的。

第二。您提供的上下文中不存在b

第三。盲目地http://交换www.是危险的。 python.orgwww.python.org是两个不同的域名,可能指向不同的地方!

您应该使用正则表达式或其他一些例程从URL中提取域名,并在其上使用gethostbyname