Pythonのbeautifulメソッド find_previous_siblings()、find_previous_sibling()

PythonのBeautiful Soupライブラリには、要素の兄弟要素を遡って検索するためのfind_previous_siblings()メソッドとfind_previous_sibling()メソッドがあります。これらのメソッドは、HTMLやXMLドキュメント内で指定された条件に一致する兄弟要素を遡って検索するために使用されます。

  1. find_previous_siblings()メソッド:
    • find_previous_siblings()メソッドは、指定した条件に一致するすべての前の兄弟要素をリストとして返します。
    • このメソッドは、Beautiful Soupの要素オブジェクト(タグ)に対して呼び出されます。
    • 例えば、同じ階層にある特定のクラス属性を持つ前の兄弟要素を見つける場合などに使用できます。
python
from bs4 import BeautifulSoup

html_doc = """
<html>
  <body>
    <ul>
      <li class="item">Item 1</li>
      <li class="item">Item 2</li>
      <li class="item">Item 3</li>
    </ul>
  </body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
list_item = soup.find('li', class_='item')  # 'item'クラスを持つ最初の<li>要素を選択

siblings = list_item.find_previous_siblings(class_='item')  # 'item'クラスを持つ前の兄弟要素を検索

for sibling in siblings:
    print(sibling)
  1. find_previous_sibling()メソッド:
    • find_previous_sibling()メソッドは、指定した条件に一致する前の兄弟要素を返します。find_previous_siblings()メソッドとは異なり、最初の一致する要素のみを取得します。
    • このメソッドもBeautiful Soupの要素オブジェクトに対して呼び出されます。
python
from bs4 import BeautifulSoup

html_doc = """
<html>
  <body>
    <ul>
      <li class="item">Item 1</li>
      <li class="item">Item 2</li>
      <li class="item">Item 3</li>
    </ul>
  </body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
list_item = soup.find('li', class_='item')  # 'item'クラスを持つ最初の<li>要素を選択

sibling = list_item.find_previous_sibling(class_='item')  # 'item'クラスを持つ前の兄弟要素を検索

print(sibling)

上記のコード例では、find_previous_siblings()メソッドとfind_previous_sibling()メソッドを使用して、<li>要素の前の兄弟要素としてclass属性が"item"と一致する要素を検索しています。find_previous_siblings()メソッドはすべての一致する前の兄弟要素をリストとして返し、find_previous_sibling()メソッドは最初の一致する前の兄弟要素を取得します。