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

hnd*_*ndr 0 python url escaping urllib urllib2

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

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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*eed 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'
Run Code Online (Sandbox Code Playgroud)

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