我正在尝试获取包含变音符号(í,č...)的页面的html。问题是urllib2.quote似乎没有按我预期的那样工作。

就我而言,quote应该将包含变音符号的url转换为正确的url。

这是一个例子:

url = 'http://www.example.com/vydavatelství/'

print urllib2.quote(url)

>> http%3A//www.example.com/vydavatelstv%C3%AD/

问题是由于某种原因它更改了http//字符串。然后urllib2.urlopen(req)返回错误:

最佳答案

-TL; DR-

两件事情。首先,请确保您在Python脚本的顶部包含了shebang # -- coding: utf-8 --。这让python知道如何在文件中编码文本。第二件事,您需要指定安全字符,这些字符不会由quote方法转换。默认情况下,仅/被指定为安全字符。这意味着:正在转换,这破坏了您的URL。

url = 'http://www.example.com/vydavatelství/'
urllib2.quote(url,':/')
>>> http://www.example.com/vydavatelstv%C3%AD/

-有关此的更多信息-

因此,这里的第一个问题是urllib2的文档非常差。离开Kamal提供的链接,我看不到文档中的quote方法。这使得排除故障非常困难。

话虽如此,让我解释一下。
urllib2.quote似乎与urllib的quote的实现documented pretty well相同。 urllib2.quote()具有四个参数
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
##   string: string your trying to encode
##     safe: string contain characters to ignore. Defualt is '/'
## encoding: type of encoding url is in. Default is utf-8
##   errors: specifies how errors are handled. Default is 'strict' which throws a UnicodeEncodeError, I think.

关于python - urllib2.quote无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29594842/

10-15 00:38