使用python转义带有特殊字符的查询字符串

时间:2012-06-17 02:49:50

标签: python url escaping urllib2 urllib

我得到了一些非常混乱的网址,我在这里通过抓取,问题是它们在路径和查询字符串中包含空格或其他特殊字符,这里是一些示例

http://www.example.com/some path/to the/file.html
http://www.example.com/some path/?file=path to/file name.png&name=name.me

那么,是否有一种简单而强大的方法来逃避网址,以便我可以将它们传递给urlopen? 我尝试了urlib.quote,但它似乎也逃避了查询字符串中的'?','&'和'=',它似乎也逃脱了协议, 目前,我想要做的是使用正则表达式来分离协议,路径名和查询字符串并单独转义它们,但有些情况下它们没有正确分开 任何建议表示赞赏

1 个答案:

答案 0 :(得分:5)

默认情况下,

urllib.quote将引用除/之外的所有内容。您可以将一个字符列表传递给第二个参数:

urllib.quote('http://www.example.com/some path/?file=path to/file name.png&name=name.me',
             '/:?&=')
'http://www.example.com/some%20path/?file=path%20to/file%20name.png&name=name.me'

但这是半手工搞乱的相当棘手的事情。