Python の実装: Web サイト内のすべての XPath のツリー構造を取得するにはどうすればよいですか?
P粉155832941
P粉155832941 2024-02-21 15:05:16
0
1
416

方法 1

Python を使用して Web サイト (https://startpagina.nl) 内のすべての xpath の階層ツリーを取得しようとしたとき、最初に次を使用してブランチの xpath を取得しようとしました: /html/body:

リーリー

@Prophet の回答に基づいて、これにより Web サイト内のすべての要素のリストが生成されます。ただし、これらの要素の xpath を取得する方法も、要素をツリー構造に並べ替える方法もわかりません。

そして、/html/body/div[6] オプションは、代わりに長さ 1 のツリーを生成します。

方法 2

@Micheal Kay の回答に基づいて、次の Python コードを使用して「XML のトラバース」を試みました。 リーリー

ただし、個々の要素の xpath を取得する方法がわかりません。

###質問###

そこでお聞きしたいのですが:

Python を使用して Web サイト内のすべての xpath のツリーを取得するにはどうすればよいですか?

(ツリーが循環しているかどうかは疑問ですが、ツリーの入手方法がわかれば分かると思います。)

期待される出力

手動での HTML の閲覧に基づく: 出力を次のようにしたい:

リーリー

これはツリーリストの例になります。

P粉155832941
P粉155832941

全員に返信(1)
P粉127901279

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 式に末尾の / を含めることができないためです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート