gpt4 book ai didi

python - 从 urllib 请求中获取 unicode

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:10 24 4
gpt4 key购买 nike

我正在运行以下代码,试图在某些 HTML 中查找特定信息。但是,我有一个编码/解码问题,我无法解决。

import urllib
req = urllib.urlopen('http://securities.stanford.edu/1046/AAI00_01/')
html = req.read()
type(html)
# <type 'str'>
html.upper().find('HTML')
# -1
print html[0:20]
# ??<HTML><HE
html[0:10]
# '\xff\xfe<\x00H\x00T\x00M\x00'
req.headers['content-type']
# 'text/html'
html = html.encode('utf-8')
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

这个问题的解决方案是什么?我需要做的就是使用 .find 和正则表达式从页面中抓取一些信息。

我正在使用 Mac OSX 并从终端运行 Python 2.6.1。

最佳答案

如果您尝试将 str 转换为 unicode,您需要使用 html.decode,而不是 编码

较旧的错误建议:此外,由于您似乎在开头就有 BOM,因此您可能想使用 'utf_8_sig' 作为编码,这将在解码时去除 BOM。

更好的新建议:实际上,从输出中所有那些 \x00 以及 BOM 来看,它看起来更像是编码实际上是 UTF- 16,不是 UTF-8。所以,html.decode('utf-16') 应该是正确的选择。

关于python - 从 urllib 请求中获取 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com