我目前正试图抓取一个格式相当差的HTML网站(通常缺少结束标签,不使用类或ID,所以直接找到你想要的元素非常困难等等).到目前为止,我一直在使用BeautifulSoup取得了一些成功,但每隔一段时间(尽管很少),我会遇到一个页面,其中BeautifulSoup创建的HTML树与(例如)Firefox或Webkit略有不同.虽然这是可以理解的,因为HTML的格式化使这种模糊,如果我能够获得与Firefox或Webkit产生相同的解析树,我将能够更容易地解析事物.问题通常是网站打开标签两次,当BeautifulSoup看到第二个
标签时,它会立即关闭第一个标签,而Firefox和Webkit嵌套
标签.
是否存在用于Python(甚至任何其他语言(我正在变得绝望))的Web抓取库,它可以重现由Firefox或WebKit生成的解析树(或者在模糊的情况下至少比BeautifulSoup更接近).
用BeautifulSoup
一棵树建设者html5lib
:
from html5lib import HTMLParser, treebuilders parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup")) text = "abc" soup = parser.parse(text) print soup.prettify()
输出:
a b c