python中的URL编码/解码(整个网址,而不仅仅是路径)

时间:2013-07-16 00:02:06

标签: python url urlencode urllib

我做了很多搜索和实验,但我找不到解决方案。所以,如果我错过了一些微不足道的事情,我会提前道歉。

问题:

我有一个正在下载网址资源的python turbogears应用。它被提供了一个供客户下载的URL。

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

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

我知道有编码字符串的方法(urllib.urlencode / urllib.quote等)。但是他们认为他们使用的字符串不是网址。如果你给这些方法提供一个URL,它们就会逃脱url的方案,并使其更加无效。

所以,总结是:我如何在python中覆盖整个完全限定的URL?

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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