Beautiful Soupの「HTMLツリーのナビゲーション」における「要素間の移動と関係性の把握」では、HTML文書の構造を木(ツリー)としてとらえ、各要素(タグ)同士の親子関係や兄弟関係を把握しながら移動・操作することが可能です。以下に、主なプロパティとその使い方を詳しく説明します。
1. .parent:親要素へのアクセス
.parent:親要素へのアクセスある要素の親要素(1階層上の要素)を取得します。
-
tagが<a>タグなら、それを囲む親のタグ(例:<div>など)を取得できます。
2. .parents:すべての親要素のイテレータ
.parents:すべての親要素のイテレータ複数階層の親要素をさかのぼるイテレータです。
-
順に
<body>,<html>など、最上位の要素までたどれます。
3. .children:直下の子要素(1階層下)
.children:直下の子要素(1階層下)指定した要素の直下の子ノード(タグや文字列)を列挙します。
-
リストではなくイテレータで返されます。
4. .descendants:すべての子孫要素(複数階層下)
.descendants:すべての子孫要素(複数階層下)孫、ひ孫なども含めたすべての下位要素を再帰的にたどれます。
5. .next_sibling:次の兄弟要素
.next_sibling:次の兄弟要素現在の要素の次の兄弟ノードを取得します(タグでないこともあり得ます)。
-
空白や改行(
\n)が含まれる場合があるため、注意が必要です。
6. .previous_sibling:前の兄弟要素
.previous_sibling:前の兄弟要素現在の要素の前の兄弟ノードを取得します。
-
これも改行や空白が含まれることがあります。
7. .next_siblings / .previous_siblings:兄弟ノードのイテレータ
.next_siblings / .previous_siblings:兄弟ノードのイテレータ次または前の兄弟ノードをすべて列挙できます。
まとめ:要素間の関係性と移動の活用例
このように、Beautiful Soupを用いることでHTML文書を「親 → 子」、「兄 → 弟」といった構造でナビゲートでき、構造の把握や特定の要素の抽出が柔軟に行えます。これはスクレイピング処理において非常に有用な機能です。
ChatGPT4o 生成日:2025/06/19