当前位置: 首页 > 面试题库 >

Python urlparse —提取不带子域的域名

司徒运锋
2023-03-14
问题内容

需要一种使用Python urlparse从URL提取不带子域的域名的方法。

例如,我想"google.com"从完整的网址中提取,例如"http://www.google.com"

我似乎可以看到的最接近的urlparsenetloc属性,但其中包括子域,在此示例中为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"


 类似资料:
  • 问题内容: 我需要编写一个函数来解析包含域名的变量。最好用一个示例来说明,变量可以包含以下任何内容: 但是当通过我的函数传递时,所有这些都必须返回example.com或example.co.uk,基本上是根域名。我敢肯定我之前已经做过,但是我已经搜索Google约20分钟了,找不到任何东西。任何帮助,将不胜感激。 编辑:忽略.co.uk,假定通过此功能的所有域都具有3个字母的TLD。 问题答案:

  • 问题内容: 我的网址可以是以下任何一种格式: 本质上,我需要能够匹配任何常规URL。我如何 通过一个正则表达式从所有这些文件中提取(或.net,无论tld刚好是什么。我需要它与任何TLD一起使用)? 问题答案: 好了,您可以用来获取主机: 然后,您可以做一些有趣的事情,仅获取TLD和主机 不是很优雅,但应该可以。 如果您想要一个解释,请按照以下步骤进行: 首先,我们使用的功能来抓取方案之间的所有内

  • 主要内容:示例子域是域名的扩展名,可以转发到URL或指向主机帐户或不同服务器中的IP地址和目录。 子域功能与主域名分开。 我们可以使用子域创建网站的区域。 示例 可以在网站上创建一个名为“移动端”的博客子域,例如:除了已经存在的 www.yiibai.com/m 之外,还可以通过URL - http://m.yiibai.com 访问该移动端网站。 理论上,我们可以为每个域名添加无限的子域名。 也可以添加多个子

  • 问题内容: 我正在一个具有多个子域的站点上,其中一些应该具有自己的会话。 我想我已经解决了,但是注意到了一些我不理解的关于cookie处理的信息。我在文档中看不到有任何解释它的内容,因此我想我可以看看这里是否有人对此问题有所了解。 如果我只是这样做: 我最终得到了这样的会话cookie: subdomain.example.net 但是,如果我尝试自己设置Cookie域,无论是 或喜欢 我最终获得

  • 问题内容: 我有两个域类,一个是父级,另一个是子级,并且它们之间具有hasMany关系。家长班有很多孩子,孩子班属于家长班。这是编码示例。 问题是,一旦获得父对象,与父类关联的子对象也将被获取。但是,当我将对象转换为JSON时,我看不到子对象的全部,我只能看到子对象的ID。我想查看子对象的所有列,而不只是ID。 转换后的JSON响应: 但是我也想要包含子对象名称的响应,如下 任何帮助,不胜感激。提

  • 子域是一个域,它是主域的一部分并存在于同一服务器中。 我们也可以说它是第二个网站,它位于主域之下,但它可能与根网站有任何关系。 我们可以在这个子域下运行一个新网站。 For Example - blog.wenjiangs.com是根域wenjiangs.com的子域,blog.tutorialpoint.com也可以通过tutorialpoint.com/blog访问。 创建子域 Step 1