我正试图摆脱 BeautifulSoup,我喜欢它,但似乎(积极地)不受支持。我正在尝试使用 html5lib 和 lxml,但我似乎无法弄清楚如何使用“find”和“findall”运算符。
通过查看 html5lib 的文档,我想出了一个测试程序:
import cStringIO
f = cStringIO.StringIO()
f.write("""
<html>
<body>
<table>
<tr>
<td>one</td>
<td>1</td>
</tr>
<tr>
<td>two</td>
<td>2</td
</tr>
</table>
</body>
</html>
""")
f.seek(0)
import html5lib
from html5lib import treebuilders
from lxml import etree # why?
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("lxml"))
etree_document = parser.parse(f)
root = etree_document.getroot()
root.find(".//tr")
但这返回无。我注意到,如果我这样做,etree.tostring(root)
我会取回所有数据,但我所有的标签都以html
(例如<html:table>
)开头。但root.find(".//html:tr")
抛出一个 KeyError。
有人可以让我回到正确的轨道上吗?