【问题标题】:Splitting a list of links into a list of domains将链接列表拆分为域列表
【发布时间】:2021-08-10 10:52:59
【问题描述】:

所以我有多个包含网站链接的列表:

['www.google.com', 'www.yahoo.com', 'www.amazon.com']

我想获取如下列表:

['google', 'yahoo', 'amazon']

如何使用 urllib 来检索它?我得到了以下信息:

from urllib.parse import urlparse
domain = urlparse('http://www.google.com').netloc
print(domain)

但我不知道如何为列表做这件事,结果是www.google.com 而不仅仅是谷歌。

【问题讨论】:

  • 列表的目的是什么?例如,您通过将其缩减为 amazon 来剥离大量信息。 amazon.co.ukamazon.net 应该被认为是同一件事吗? google.commail.google.com 是否应该被视为相同?
  • 我将合并列表以创建超链接。所以我只需要您可以点击的网站名称即可访问该网站。
  • 如果不绑定使用 urllib,那么您也可以使用正则表达式或简单的字符串拆分也可以使用它。(在这种情况下正则表达式会过大)

标签: python list url urlparse


【解决方案1】:

如果您提供的只是普通链接,那么这样做对您有用。

links=['www.google.com', 'www.yahoo.com', 'www.amazon.com']
print([link.split(".")[1] for link in links])
# ["google","yahoo","amazon"]

但如果link 有多个子域,那么它就不会按预期工作。

我发现图书馆会按预期完成你的工作,tldextract:

links=['https://www.google.com/asdfl', 'translate.google.com', 'afe.amdfad.azon.com']
import tldextract

print([tldextract.extract(link).domain for link in links])
# ['google', 'google', 'azon']

【讨论】:

    【解决方案2】:

    下面的代码应该可以工作。

    import re
    domains = ['www.google.com', 'www.yahoo.com', 'www.amazon.com']
    result = [re.findall(r'www\.(.*)\.\w{2,5}', domain)[0] for domain in domains]
    

    结果:

    ['google', 'yahoo', 'amazon']
    

    【讨论】:

    • google.comtranslate.google.com 怎么样?
    • 好吧,如果 URL 是作者提供的格式 (www.translate.google.com),它将返回 transalate.google。
    • 没有像www.translate.google.com这样的网站!
    • 在这种情况下,这将起作用:result = [re.findall(r'\w*\.(.*)\.\w{2,5}', domain)[0] for域中域]
    【解决方案3】:

    我建议将整个 netloc 提供给用户,让事情更容易理解。但是,对于您的问题,如果数据是一致的,您也可以简单地使用split

    from urllib.parse import urlparse
    
    domain = urlparse('http://www.google.com').netloc
    print(domain.split('.')[1])
    

    这种方法在子域方面确实有它的缺点: translate.google.com -> google(我认为这是错误的)

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多