Python<body>
で使用して要素のコンテンツを取得するにはどうすればよいですか?html5lib
入力データの例:<html><head></head><body>xxx<b>yyy</b></hr></body></html>
期待される出力:xxx<b>yyy</b></hr>
HTML が壊れていても動作するはずです (閉じられていないタグなど)。
html5lib
さまざまな標準ツリー形式を使用してドキュメントを解析できます。以下で行ったように、 lxmlを使用してこれを行うことができます。または、ユーザー ドキュメントの指示に従って、minidom、ElementTreeまたはBeautifulSoupのいずれかを使用して行うこともできます。
file = open("mydocument.html")
doc = html5lib.parse(file, treebuilder="lxml")
content = doc.findtext("html/body", default=None):
コメントへの返信
独自の simpletree.pyを使用して外部ライブラリをインストールせずにこれを達成することは可能ですが、ファイルの先頭にあるコメントから判断すると、これは推奨される方法ではないと思います...
# Really crappy basic implementation of a DOM-core like thing
ただし、それでもこれを行いたい場合は、次のように html ドキュメントを解析できます。
f = open("mydocument.html")
doc = html5lib.parse(f)
次に、ドキュメント内の子ノードの幅優先検索を実行して、探している要素を見つけます。ノードは名前付きの配列に保持され、childNodes
各ノードにはフィールドに格納された名前がありますname
。