Python urlparse —提取不带子域的域名
需要一种使用Python urlparse从URL提取不带子域的域名的方法。
例如,我想"google.com"
从完整的网址中提取,例如"http://www.google.com"
。
我似乎可以看到的最接近的urlparse
是netloc
属性,但其中包括子域,在此示例中为www.google.com
。
我知道可以编写一些自定义字符串操作将www.google.com转换为google.com,但是我想避免在此任务中进行手工字符串转换或正则表达式。(这样做的原因是,我对url形成规则不够熟悉,以至于没有信心在编写自定义解析函数时可以考虑所需要的所有边缘情况。)
或者,如果urlparse
不能满足我的需要,是否有人会知道其他任何Python URL解析库?
-
您可能想查看tldextract,该库旨在执行这种操作。
它使用公共后缀列表尝试根据已知gTLD进行合理的拆分,但请注意,这只是一个蛮力列表,没有什么特别的,因此可以过时了(尽管希望它经过整理以免)。
>>> import tldextract >>> tldextract.extract('http://forums.news.cnn.com/') ExtractResult(subdomain='forums.news', domain='cnn', suffix='com')
因此,在您的情况下:
>>> extracted = tldextract.extract('http://www.google.com') >>> "{}.{}".format(extracted.domain, extracted.suffix) "google.com"