我需要帮助。我如何从字符串获取域名?从字符串获取域名? - Python
例如: “嗨IM夏目漱石,看看我的网站http://www.mysite.com/”
我如何得到公正mysite.com?
输出例如:
http://www.mysite.com/(如果HTTP输入)
www.mysite.com(如果HTTP没有输入)
mysite.com(如果http和WWW没有进入)
我需要帮助。我如何从字符串获取域名?从字符串获取域名? - Python
例如: “嗨IM夏目漱石,看看我的网站http://www.mysite.com/”
我如何得到公正mysite.com?
输出例如:
http://www.mysite.com/(如果HTTP输入)
www.mysite.com(如果HTTP没有输入)
mysite.com(如果http和WWW没有进入)
myString = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> a = re.search("(?P<url>https?://[^\s]+)", myString) or re.search("(?P<url>www[^\s]+)", myString)
>>> a.group("url")
'http://www.mysite.com/'
>>> myString = "Hi im Natsume, check out my site www.mysite.com/"
>>> a = re.search("(?P<url>https?://[^\s]+)", myString) or re.search("(?P<url>www[^\s]+)", myString)
>>> a.group("url")
'www.mysite.com/'
嗯......你需要一些方法来定义什么是一些有一个“域”。一种方法可能是查找用于URL匹配的正则表达式,并将其应用于字符串。如果成功,您至少知道该字符串包含一个URL,并且可以继续解释该URL以查找主机名,然后您可以从中提取该域(可能)。
如果所有的网站有相同的格式,你可以使用这样的正则表达式(在这种特定的情况下工作):但是你需要一个能够解析更复杂的正则表达式
re.findall('http://www\.(\w+)\.com', url)
为准网址并提取域名。
如果域具有这样的结构,my-web-site.com(\ w +)只找到“site” – derevo
're.findall('http:// www \。([a-zA-Z0-9_-] +)\ .com','http://www.my-web-site。com)' – user278064
如果你想使用正则表达式,一种方式可能是 -
>>> s = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> re.findall(r'http\:\/\/www\.([a-zA-Z0-9\.-_]*)\/', s)
['mysite.com']
..considering URL以 '/'
啊,我喜欢你的代码。但如果用户没有输入http://或www如何获取域名? – Natsume
在这种情况下,你可以简单地做 - '>>> s =“Hi im Natsume,check out my site mysite.com” >>> [t for s.split()if'.com'in t] ['mysite.com']' – theharshest
正则表达式我修改 - > raw = re.findall(r'([a-zA-Z0-9 \。] *)([a-zA-Z0-9 \ /] *)',url),使得正则表达式能够在http://或www被输入时找到域,并且URL位于字符串的开始,结尾或者中间 – Natsume
s= "Hi im Natsume, check out my site http://www.mysite.com/"
start=s.find("http://") if s.find("http://")!=-1 else s.find("https://")+1
t = s[start+11:s.find(" ",start+11)]
print(t)
输出端: mysite.com
见[这个问题](http://stackoverflow.com/questions/2626995/python-regular-expression-for-domain-names) –
你有什么试过?你有没有想过在字符串中搜索某些定义的特征? –