2008-11-13 64 views
2

所以我使用python来做一些网页解析,我想将完整的网址分成两部分。说我有地址http://www.stackoverflow.com/questions/ask。我需要协议和域名(例如http://www.stackoverflow.com)和路径(例如/ questions/ask)。我想这可能是通过一些正则表达式来解决的,但我并不那么方便。有什么建议么?如何拆分网址

+0

重复。请参阅http://stackoverflow.com/questions/258746/slicing-url-with-python和http://stackoverflow.com/questions/163009/urllib2-file-name – 2008-11-13 10:57:44

回答

0
import re 
url = "http://stackoverflow.com/questions/ask" 
protocol, domain = re.match(r"(http://[^/]*)(.*)", url).groups() 
7

使用Python模块里urlparse:

https://docs.python.org/library/urlparse.html

对于这样一个明确的和见多识广的问题,不编写自己的代码麻烦,更何况自己的正表达式。他们造成太多麻烦;-)。

12

丹是正确的:是里urlparse您的朋友:

>>> from urlparse import urlparse 
>>> 
>>> parts = urlparse("http://www.stackoverflow.com/questions/ask") 
>>> parts.scheme + "://" + parts.netloc 
'http://www.stackoverflow.com' 
>>> parts.path 
'/questions/ask' 
+0

得爱电池包括哲学。我认为最初的b/c正则表达式我不知道电池是否包含在内。谢谢。 – 2008-11-13 18:22:03