検索

ホームページ  >  に質問  >  本文

Python の実装: Web サイト内のすべての XPath のツリー構造を取得するにはどうすればよいですか?

方法 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粉155832941P粉155832941302日前389

全員に返信(1)返信します

  • P粉127901279

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

    返事
    0
  • キャンセル返事