如何在BeautifulSoup中打开编码为windows-1252的HTML页面

4 投票
2 回答
2978 浏览
提问于 2025-04-16 17:25

我在用beautifulsoup解析一个HTML文档的时候遇到了麻烦。请问用windows-1252编码打开HTML文档的最佳方法是什么?

我尝试用iconv转换成utf-8,但这也不行。

doc = open("e.html").read()

soup = BeautifulSoup(doc)

soup.findAll('p')

出现了UnicodeEncodeError错误:'ascii'编码无法在位置103编码字符u'\xfc',因为这个字符不在范围内(128以内)。

当我不使用iconv打开时,也会出现同样的错误。

完整的错误追踪信息:

>>> soup.findAll('p')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 103: ordinal not in range(128)

2 个回答

0

试试这样做:

doc = open("e.html").read()

doc = doc.decode('cp1252')

soup = BeautifulSoup(doc)

soup.findAll('p')
1

我遇到了类似的错误:

Unicode解码错误:'utf-8' 编码无法解码位置723617的字节0xe9:无效的继续字节

对我有效的方法是这样指定输入的编码:

page = open("page.html", encoding="windows-1252")

soup = BeautifulSoup(page.read(), "html.parser")

撰写回答