我确定我不是第一个遇到这个问题的人。但经过几个小时的调试,谷歌搜索和StackOverflowing没有找到答案,我决定发布这个问题。如果我错过任何事情,请提前抱歉,但到现在为止,我很困惑。
我正在使用BeautifulSoup来解析UTF-8网站。我正在使用网站上的文字来构建一个URL以进一步抓取。我遇到了一些非英语字符问题。
例如:网站包含字符串Originální formule
,我想用它来构建网址:http://blahblah.com/Originální-formule
或http://blahblah.com/origin%C3%A1ln%C3%AD-formule
。问题是,我得到http://blahblah.com/Origin\xe1ln\xed-formule
,这会产生错误。我试图编码,解码和什么不,但我仍然无法获得正确的URL。
BTW,当我print u'Origin\xe1ln\xed-formule'
时,字符串打印得很好。它只是编码不成功。
我做错了什么?
答案 0 :(得分:1)
为了实现您的期望,您必须执行以下操作:
您可以结合使用以下功能执行这些操作:
代码最终会像这样:
from urlparse import urlparse, urlunparse
from urllib import quote
x = u'http://blahblah.com/Originální-formule'
parsed_url = list(urlparse(x.encode('utf-8')))
parsed_url[2] = quote(parsed_url[2])
urlunparse(parsed_url)
结果:http://blahblah.com/Origin%C3%A1ln%C3%AD-formule