在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
答案 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.org
和www.python.org
是两个不同的域名,可能指向不同的地方!
您应该使用正则表达式或其他一些例程从URL中提取域名,并在其上使用gethostbyname
。