Python xml.dom 和坏 XML
我正在用一个Python程序从不同的HTML页面提取一些数据。可惜的是,这些页面里有些是用户输入的数据,偶尔会出现一些“小”错误——也就是标签不匹配。
有没有什么好的办法让Python的xml.dom尝试修正这些错误,或者类似的东西?或者,有没有更好的方法来提取可能包含错误的HTML页面中的数据?
4 个回答
0
我以前常用BeautifulSoup来处理这些任务,但现在我转而使用HTML5lib(http://code.google.com/p/html5lib/),这个工具在很多情况下比BeautifulSoup更有效。
另一个选择是使用Element Soup(http://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 来解析内容。可能需要把结果保存到一个临时文件里,但应该是可以正常工作的。
祝好,