我得到了一些非常混乱的网址,我在这里通过抓取,问题是它们在路径和查询字符串中包含空格或其他特殊字符,这里是一些示例
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,但它似乎也逃避了查询字符串中的'?','&'和'=',它似乎也逃脱了协议, 目前,我想要做的是使用正则表达式来分离协议,路径名和查询字符串并单独转义它们,但有些情况下它们没有正确分开 任何建议表示赞赏
答案 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'
但这是半手工搞乱的相当棘手的事情。