我正在尝试使用 python 程序从各种 HTML 页面中提取一些数据。不幸的是,其中一些页面包含用户输入的数据,这些数据偶尔会出现“轻微”错误 - 即标签不匹配。

有没有好的方法让 python 的 xml.dom 尝试纠正错误或类似的事情?或者,是否有更好的方法从可能包含错误的 HTML 页面中提取数据?

有帮助吗?

解决方案

你可以使用 HTML 整洁 清理,或 美丽的汤 来解析。可能您必须将结果保存到临时文件中,但它应该可以工作。

干杯,

其他提示

我曾经使用 BeautifulSoup 来完成此类任务,但现在我已经转向 HTML5库 (http://code.google.com/p/html5lib/)在许多 BeautifulSoup 失败的情况下效果很好

另一种选择是使用“元汤" (http://effbot.org/zone/element-soup.htm) 这是使用 ElementTree 对 Beautiful Soup 的包装

lxml 在解析无效 HTML 方面做得不错。

根据他们的文档 美丽的汤html5库 有时根据输入表现更好。使用 lxml,您可以选择使用哪个解析器,并通过统一的 API 访问它们。

如果Jython是可以接受你,tagsoup是在解析垃圾非常好 - 如果是这样,我发现JDOM库更容易比其他XML的替代品使用。

这是从演示实体模型的一个片段是与屏幕从TFL的旅程规划刮:

 private Document getRoutePage(HashMap params) throws Exception {
        String uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2";
        HttpWrapper hw = new HttpWrapper();
        String page = hw.urlEncPost(uri, params);
        SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
        Reader pageReader = new StringReader(page);
        return builder.build(pageReader);
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top