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")
しかし、これは None を返します。を実行すると、すべてのデータが返されることに気付きましたetree.tostring(root)
が、すべてのタグはhtml
(eg <html:table>
) で始まります。しかしroot.find(".//html:tr")
、KeyError をスローします。
誰かが私を正しい軌道に戻すことができますか?