Python を使用して Web サイト (https://startpagina.nl) 内のすべての xpath の階層ツリーを取得しようとしたとき、最初に次を使用してブランチの xpath を取得しようとしました: /html/body
:
@Prophet の回答に基づいて、これにより Web サイト内のすべての要素のリストが生成されます。ただし、これらの要素の xpath を取得する方法も、要素をツリー構造に並べ替える方法もわかりません。
そして、/html/body/div[6]
オプションは、代わりに長さ 1 のツリーを生成します。
@Micheal Kay の回答に基づいて、次の Python コードを使用して「XML のトラバース」を試みました。 リーリー
ただし、個々の要素の xpath を取得する方法がわかりません。###質問###
そこでお聞きしたいのですが:Python を使用して Web サイト内のすべての xpath のツリーを取得するにはどうすればよいですか?
(ツリーが循環しているかどうかは疑問ですが、ツリーの入手方法がわかれば分かると思います。)期待される出力
手動での HTML の閲覧に基づく: 出力を次のようにしたい:P粉1279012792024-02-22 13:34:15
1 つ以上の要素を選択する XPath の総数は無制限です (たとえば、/a/b/../b/../b/../b
のようなパスが含まれます)。ただし、/a[i]/b[j]/c[k]
の形式のパスに限定すると、パスの数は要素の数に等しく、「ツリー」は要素の数に等しくなります。 XPaths は、元の XML ツリーの同型性と同じです。
数値述語のない別のパス (/a/b/c
、/a/b/d
など) が必要な場合、おそらく最も簡単な方法は、XML ドキュメントを反復処理することです。 、各要素のパスを (この形式で) 取得し、重複を削除します。パスの単純なリストではなくツリー構造が必要な場合は、ネストされたマップ/辞書を使用してそれを構築します。
/html/body/
について問題が発生する理由は、正当な XPath 式に末尾の /
を含めることができないためです。