Python xml.dom 和坏 XML

0 投票
4 回答
794 浏览
提问于 2025-04-15 12:59

我正在用一个Python程序从不同的HTML页面提取一些数据。可惜的是,这些页面里有些是用户输入的数据,偶尔会出现一些“小”错误——也就是标签不匹配。

有没有什么好的办法让Python的xml.dom尝试修正这些错误,或者类似的东西?或者,有没有更好的方法来提取可能包含错误的HTML页面中的数据?

4 个回答

0

我以前常用BeautifulSoup来处理这些任务,但现在我转而使用HTML5libhttp://code.google.com/p/html5lib/),这个工具在很多情况下比BeautifulSoup更有效。

另一个选择是使用Element Souphttp://effbot.org/zone/element-soup.htm),它是一个基于ElementTree的Beautiful Soup的封装工具。

0

如果你能接受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);
    }
3

你可以使用 HTML Tidy 来整理你的代码,或者用 Beautiful Soup 来解析内容。可能需要把结果保存到一个临时文件里,但应该是可以正常工作的。

祝好,

撰写回答