【问题标题】:Comparing urls with slash and www将 url 与斜杠和 www 进行比较
【发布时间】:2014-02-18 13:54:47
【问题描述】:

下面列出的网址是否相同或相等?

1. http://example.com
2. http://www.example.com
3. http://example.com/

如果它们相同,如何在 python 中比较这些 url 是否相等?

提前致谢。

【问题讨论】:

  • 他们不一样。它们可以都返回相同的内容,也可以不返回,这取决于网络服务器的设置。
  • @MarkkuK.whats 他们之间的区别。在哪里使用 www 和在哪里不类似地使用它,什么时候可以使用 / 什么时候不可以......
  • 我的意思是 1、2 和 3 是不同的字符串,因此它们不一定引用相同的内容。在实践中,他们经常这样做,但并非必须这样做。

标签: python url web uri


【解决方案1】:

您可以将整个 URL 拆分为多个部分:

>>> import urlparse
>>> urlparse.urlparse('http://www.example.com')
ParseResult(scheme='http', netloc='www.example.com', path='', params='', query='', fragment='')
>>> urlparse.urlparse('http://example.com')
ParseResult(scheme='http', netloc='example.com', path='', params='', query='', fragment='')

如果您假设所有 URL 都来自同一个域,但有时以“www”为前缀,您可以只比较“路径”组件。这取决于您的特定任务。

【讨论】:

    【解决方案2】:

    无需重新发明轮子。

    使用这个为解析 URL 而设计的正则表达式。

    http://daringfireball.net/2010/07/improved_regex_for_matching_urls

    【讨论】:

    • 我只看到了正则表达式代码。但是如何使用该正则表达式代码来比较两个 url?
    • 这些正则表达式模式删除了所有不必要的字符,因此您将 URL 传递到这些正则表达式模式中,它将返回基本 URL(例如,http://example.com 变为“example.com”如果您针对传入正则表达式的 http://ww w.example.com 进行测试,它还将返回“example.com”,因此它们将是相同的。编辑:愚蠢的 StackOverflow 自动格式化我的 URL。
    • 我使用以下代码在 python 上进行了尝试: import re # coding=utf-8 def urlValidation(url): regex = re.compile(r'(?i)\b((?:[ az][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\- ]+[.][az]{2,4}/)(?:[^\s()]+|(([^\s()]+|(([^\s() ]+)))*))+(?:(([^\s()]+|(([^\s()]+)))*)|[^\s` !()[]{};:''".,?«»“”'']))', re.IGNORECASE) result = re.match(regex, url) return result print urlValidation('@987654322 @) 但是得到了毫无意义的结果:<_sre.sre_match object at>
    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2012-07-12
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多