Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中获取域?-python_Python_String_Url_Dns - Fatal编程技术网

从字符串中获取域?-python

从字符串中获取域?-python,python,string,url,dns,Python,String,Url,Dns,我需要帮助。如何从字符串中获取域 例如:“嗨,我是夏目漱石,看看我的网站” 我怎样才能得到mysite.com呢 输出示例: (如果输入了http) www.mysite.com(如果未输入http) mysite.com(如果未输入http和www)那么。。。你需要一些方法来定义你认为是有“领域”的东西。一种方法可能是查找URL匹配的正则表达式,并将其应用于字符串。如果成功,您至少知道字符串包含一个URL,并且可以继续解释URL以查找主机名,然后从中提取域(可能)。嗯。。。你需要一些方法来定义

我需要帮助。如何从字符串中获取域

例如:“嗨,我是夏目漱石,看看我的网站”

我怎样才能得到mysite.com呢

输出示例:

(如果输入了http)

www.mysite.com(如果未输入http)


mysite.com(如果未输入http和www)

那么。。。你需要一些方法来定义你认为是有“领域”的东西。一种方法可能是查找URL匹配的正则表达式,并将其应用于字符串。如果成功,您至少知道字符串包含一个URL,并且可以继续解释URL以查找主机名,然后从中提取域(可能)。

嗯。。。你需要一些方法来定义你认为是有“领域”的东西。一种方法可能是查找URL匹配的正则表达式,并将其应用于字符串。如果成功,您至少知道字符串包含一个URL,并且可以继续解释URL以查找主机名,然后从中提取域(可能)。

myString=“Hi im Natsume,请查看我的网站http://www.mysite.com/"
>>>a=重新搜索((?Phttps?://[^\s]+)”,myString)或重新搜索((?Pwww[^\s]+)”,myString)
>>>a.group(“url”)
'http://www.mysite.com/'
>>>myString=“你好,我是夏目漱石,请访问我的网站www.mysite.com/”
>>>a=重新搜索((?Phttps?://[^\s]+)”,myString)或重新搜索((?Pwww[^\s]+)”,myString)
>>>a.group(“url”)
“www.mysite.com/”
myString=“你好,我是夏目漱石,请查看我的网站http://www.mysite.com/"
>>>a=重新搜索((?Phttps?://[^\s]+)”,myString)或重新搜索((?Pwww[^\s]+)”,myString)
>>>a.group(“url”)
'http://www.mysite.com/'
>>>myString=“你好,我是夏目漱石,请访问我的网站www.mysite.com/”
>>>a=重新搜索((?Phttps?://[^\s]+)”,myString)或重新搜索((?Pwww[^\s]+)”,myString)
>>>a.group(“url”)
“www.mysite.com/”

如果所有站点的格式都相同,您可以使用这样的regexp(在这种特定情况下可以使用):


但是,您需要一个更复杂的regexp来解析任意url并提取域名

如果所有站点的格式都相同,您可以使用这样的regexp(在这种特定情况下可以使用):


但是,您需要一个更复杂的regexp来解析任意url并提取域名

如果要使用正则表达式,一种方法是-

>>> s = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> re.findall(r'http\:\/\/www\.([a-zA-Z0-9\.-_]*)\/', s)
['mysite.com']

…考虑到url以“/”结尾

如果要使用正则表达式,一种方法是-

>>> s = "Hi im Natsume, check out my site http://www.mysite.com/"
>>> re.findall(r'http\:\/\/www\.([a-zA-Z0-9\.-_]*)\/', s)
['mysite.com']
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)
…考虑url以“/”结尾

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

输出:
mysite.com

最好的方法是使用正则表达式提取URL。然后使用
tldextract
从URL获取有效域名

import re
import tldextract

text = "Hi im Natsume, check out my site http://www.example.com/"
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text)
found_url = urls[0]
info = tldextract.extract(found_url)
domain_name = info.domain
suffix_name = info.suffix
final_domain_name  = domain_name+"."+suffix_name
print(final_domain_name)

最好的方法是使用正则表达式来提取URL。然后使用
tldextract
从URL获取有效域名

import re
import tldextract

text = "Hi im Natsume, check out my site http://www.example.com/"
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text)
found_url = urls[0]
info = tldextract.extract(found_url)
domain_name = info.domain
suffix_name = info.suffix
final_domain_name  = domain_name+"."+suffix_name
print(final_domain_name)


看看你试过什么?您是否考虑过在字符串中搜索某些定义特征?看看您尝试了什么?你有没有想过在字符串中搜索某些定义特征?啊,我有点喜欢你的代码。但是,如果用户没有进入http://或www,如何获取域呢?在这种情况下,您只需执行-
>>s=“Hi im Natsume,查看我的网站mysite.com”>>[t for t In s.split()if.com'In t][mysite.com']
我修改的正则表达式->raw=re.findall(r'([a-zA-Z0-9\.]*)([a-zA-Z0-9\/]),url),IM Tyrn:如果HTTP://WWW被输入或不输入,则URGE是找到域的,并且URL是在开始、结束或在StangaHh的中间,我喜欢您的代码一点。但是,如果用户没有进入http://或www,如何获取域呢?在这种情况下,您只需执行-
>>s=“Hi im Natsume,查看我的网站mysite.com”>>[t for t In s.split()if.com'In t][mysite.com']
我修改的正则表达式->raw=re.findall(r'([a-zA-Z0-9\.]*)([a-zA-Z0-9\/]),url),IM TyRun使ReGEX找到域名如果http://WWW输入或不,URL是在开始,结束,或在中间的斯特林戈现在我如何获得URL,如果用户没有进入HTTP?我的意思是它可以接受是否输入http,以及是否输入wwweither@Nastume使用re.search((?Pwww[^\s]+),myString.group(“url”)hmm如果用户没有输入http或www,它仍然无法接受:(@nastum可以为您的案例提供一个示例输入和输出到目前为止,我只能执行此re.search(?P(https?| www)[^\s]+)”,a).组(“url”)但如果未输入http或www仍无法接受现在我知道如果用户未输入http,如何获取url?我的意思是,无论是否输入http,以及是否输入www,它都可以接受either@Nastume使用re.search((?Pwww[^\s]+)、myString.group(“url”)嗯,如果用户没有输入http或www,它仍然无法接受:(@nastum可以给我一个您案例的输入和输出示例。到目前为止,我只能做这个重新搜索((?P(https?| www)[^\s]+)”,a)。组(“url”),但如果http或www没有输入,它仍然无法接受。如果域的结构是这样的,my-web-site.com(\w+)只找到“site”如果域有这样的结构,my-web-site.com(\w+)只查找“site”@用户_3pij检查我制作的MOD。URL以大写字母显示,而不是突出显示,因为在本例中它不是一个方法或代码。一旦你看到他们标记此注释以删除。@用户_3pij检查我制作的MOD。URL以大写字母显示,而不是突出显示,因为在本例中它不是一个方法或代码。一旦你看到他们标记此注释,则或移除。