【问题标题】:URL Encoding/Decoding in python (whole url, not just the path)python中的URL编码/解码(整个url,而不仅仅是路径)
【发布时间】:2013-07-14 00:08:48
【问题描述】:

我已经做了很多搜索和实验,但我一直无法找到解决方案。所以,如果我遗漏了一些琐碎的事情,我会提前道歉。

问题:

我有一个正在下载 url 资源的 python turbogears 应用程序。客户端正在为其提供一个 URL 以供下载。

特别是一个客户端发送未转义的 url。例如,'http://www.foo.com/file with space.txt'

当我尝试下载它时,下载失败,因为服务器无法识别此 url。它需要将空格转义为有效的 url。

我知道有些方法(urllib.urlencode/urllib.quote 等)可以对字符串进行编码。但是,他们假设他们处理的字符串不是 url。如果您为这些方法提供 URL,它们会转义 url 的方案,并使其更加无效。

所以,总结是:如何在 python 中对整个完全限定的 url 进行转义?

注意:我尝试使用 urlparse 解析出 url 组件以获取路径。然而,有时 url 会有查询参数、片段等。所以,我不想编写将 url 拆分为各个部分的代码,只从路径+查询+片段中转义所需的任何内容,然后重新构建 url。

是否有任何辅助函数可以直接获取 url,并将其转义?

另外,请注意,有时我会从客户那里获得有效的转义网址。所以,我也想处理它们,而不是双重转义。

【问题讨论】:

    标签: python url urlencode urllib


    【解决方案1】:

    好的,我在 pypi 上找到了以下内容。这似乎解决了问题。

    https://github.com/seomoz/url-py/

    这是来自 seomoz 的 url egg。似乎很好地完成了这项工作。

    【讨论】:

      【解决方案2】:

      您可以使用正则表达式将域名和文件路径分开,然后只对路径进行urlencode。 Here's the regex documentation, here's a tutorial.

      【讨论】:

      • 感谢您的回复。正如我上面所说,我不喜欢这样做。如果我想那样做,我还不如使用 urlparse 来解析出组件,进行更改,然后将它们组合回来。但是这样就容易出错。
      • 对不起,我完全错过了那部分。
      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多