我正在尝试从URL列表中提取域名。就像在https://stackoverflow.com/questions/18331948/extract-domain-name-from-the-url中一样
我的问题是,网址可以是关于一切,几个例子:m.google.com
=〉google
m.docs.google.com
=〉google
www.someisotericdomain.innersite.mall.co.uk
=〉mall
www.ouruniversity.department.mit.ac.us
=〉mit
www.somestrangeurl.shops.relevantdomain.net
=〉relevantdomain
www.example.info
=〉example
等等。
域的多样性不允许我使用how to get domain name from URL中所示的正则表达式(因为我的脚本将在来自真实网络流量的大量url上运行,正则表达式将必须是巨大的,以便捕获前面提到的所有类型的域)。
不幸的是,我的网络研究没有提供任何有效的解决方案.
有人知道怎么做吗?
任何帮助将不胜感激!
谢谢
6条答案
按热度按时间qvk1mo1f1#
使用
tldextract
,它是urlparse
的更有效版本,tldextract
可以准确地将gTLD
或ccTLD
(通用或国家a地区代码顶级域)与URL的注册domain
和subdomains
分开。t5fffqht2#
看起来你可以使用urlparse https://docs.python.org/3/library/urllib.parse.html来解析那个url,然后提取netloc。
而且,通过使用split,您可以轻松地从netloc中提取域名
fjnneemd3#
通过正则表达式的简单解决方案
nbnkbykc4#
对于regex,您可以使用如下代码:
第一个月
https://regex101.com/r/WQXFy6/5
注意,您必须注意
co.uk
等特殊情况。tkclm6bt5#
检查replace和split方法。
PS:只适用于简单的链接,如
https://youtube.com
(输出=youtube)和(www.user.ru.com)
(输出=用户)定义域名(url):
njthzxwz6#