【问题标题】:A charset problem about parsing HTML with lxml.html关于用 lxml.html 解析 HTML 的字符集问题
【发布时间】: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


【解决方案1】:

http://lxml.de/parsing.html#python-unicode-strings 说:

您通常应该避免转换 XML/HTML 数据转换为 unicode 之前 将其传递给解析器。它是 既慢又容易出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 2011-09-01
    • 2012-10-15
    • 2019-02-27
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多