JAVA快速解析unicode字符串_如何使用BeautifulSoup正确地将UTF-8编码的HTML解析为Unicode字符串?...

我正在运行一个Python程序,它获取一个UTF-8编码的网页,我使用BeautifulSoup从HTML中提取一些文本 .

但是,当我将此文本写入文件(或在控制台上打印)时,它将以意外编码形式写入 .

示例程序:

import urllib2

from BeautifulSoup import BeautifulSoup

# Fetch URL

url = 'http://www.voxnow.de/'

request = urllib2.Request(url)

request.add_header('Accept-Encoding', 'utf-8')

# Response has UTF-8 charset header,

# and HTML body which is UTF-8 encoded

response = urllib2.urlopen(request)

# Parse with BeautifulSoup

soup = BeautifulSoup(response)

# Print title attribute of a

which uses umlauts (e.g. können)

print repr(soup.find('div', id='navbutton_account')['title'])

运行它会得到结果:

# u'Hier k\u0102\u015bnnen Sie sich kostenlos registrieren und / oder einloggen!'

但我希望Python Unicode字符串在单词 können 中呈现 ö 为\xf6:

# u'Hier k\xf6bnnen Sie sich kostenlos registrieren und / oder einloggen!'

我've tried passing the ' fromEncoding'参数到BeautifulSoup,并尝试 read() 和 decode() response 对象,但它没有任何区别,或抛出错误 .

使用命令 curl www.voxnow.de | hexdump -C ,我可以看到网页确实是 ö 字符的UTF-8编码(即它包含 0xc3 0xb6 ):

20 74 69 74 6c 65 3d 22 48 69 65 72 20 6b c3 b6 | title="Hier k..|

6e 6e 65 6e 20 53 69 65 20 73 69 63 68 20 6b 6f |nnen Sie sich ko|

73 74 65 6e 6c 6f 73 20 72 65 67 69 73 74 72 69 |stenlos registri|

我超出了我的Python能力限制,所以我对如何进一步调试这一点感到茫然 . 任何建议?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值