【发布时间】:2011-06-13 16:11:23
【问题描述】:
我正在尝试使用 lxml.html 在 Python 中解析一个 html 页面。
我使用了以下代码:
import lxml.html as H
page = open('page.html', 'r').read()
doc = H.fromstring(page)
print H.tostring(doc)
page.html 是我下载的一个网页,其中包含我之前编写的代理程序,它做了一些关于使用代理和编码传输的工作。文件的编码已更改为 utf-8,而页面中的 charset 声明如下:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
顺便说一句,gb2312是一种中文字符集。
起初,我运行了上面的 python 代码,但它只打印了一个空的 html 结构,这是错误的,不是我想要的。
我尝试了一些方法,最后我发现问题是由于 charset 声明引起的:当我将 'charset=gb2312' 替换为空字符串时,解析代码按预期工作。
但我不太明白为什么会发生这种情况。我解决问题的方法是正确的方法还是只是巧合?
【问题讨论】:
标签: python html parsing character-encoding lxml