如何在python中检查页面是否基于html5?

时间:2013-05-13 05:37:22

标签: python html5 lxml

我正在尝试使用lxml模块解析网络上的各种网页,例如:

def dom(self):
    return lxml.html.fromstring(self.content)

但在html5页面的情况下,我似乎必须将此lxml.html切换为lxml.html.html5parser

http://lxml.de/html5parser.html

那么如何确定页面是否基于html5?在解析之前,我是否必须通过char检查DOCTYPE char?


编辑:我做了一个简单的正则表达式来处理这个问题。它似乎有效,但是,我仍然在寻找一些巧妙的方法。此解决方案会中断sourceline方法。

import lxml.html
from lxml.html import html5parser

def dom(self):
    content = self.content
    if self._is_html5():
        elm = html5parser.fromstring(content)
        content = lxml.html.tostring(elm, method='html')
    return lxml.html.fromstring(content)

def _is_html5(self):
    return bool(re.match(r'^<!doctype html>', self.content, re.I))

1 个答案:

答案 0 :(得分:0)

您不必仅为HTML5文件切换到使用HTML5parser。您可以并且可能应该将HTML5parser用于所有HTML文件。浏览器始终对所有HTML文件使用HTML5兼容解析器,而不管版本如何。