BeautifulSoupでサイズとカラー別で取得したいんだ

2024年6月17日

理解しました。サイズとカラー別に在庫情報を取得するために、以下の手順を実行できます。

  1. BeautifulSoupを使用してHTMLを解析します。
  2. 在庫情報を格納するための空の辞書を作成します。
  3. <tr>要素をループして、各行の情報を取得します。
  4. 各行の<th>要素からサイズを取得します。
  5. 各行の<td>要素からカラーと在庫情報を取得します。
  6. サイズとカラーを組み合わせて在庫情報を辞書に追加します。

以下は、この手順を反映したコード例です:

python
from bs4 import BeautifulSoup

html = """
<table class="stockList">
    <!-- ここにHTMLが入ります -->
</table>
"""

# BeautifulSoupを使用してHTMLを解析
soup = BeautifulSoup(html, 'html.parser')

# 在庫情報を格納するための辞書
stock_info = {}

# <tr>要素をループ
for row in soup.find_all('tr'):
    # サイズを取得
    size = row.find('th', class_='leftLine').get_text().strip()
    
    # カラーと在庫情報を取得
    for cell in row.find_all('td'):
        # カラーを取得
        color = cell.find_previous_sibling('th').get_text().strip()
        
        # 在庫情報を取得
        input_tag = cell.find('input')
        if input_tag:
            # 在庫情報を格納
            stock_status = cell.find(class_='M_stock-status').get_text().strip()
            
            # サイズとカラーをキーとして在庫情報を辞書に追加
            stock_info.setdefault(size, {}).setdefault(color, {'value': input_tag['value'], 'status': stock_status})

# 結果を出力
for size, colors in stock_info.items():
    print(f"Size: {size}")
    for color, data in colors.items():
        print(f"  - Color: {color}, Value: {data['value']}, Status: {data['status']}")

このコードは、指定されたHTMLからサイズとカラー別の在庫情報を取得し、辞書に格納します。最後に、取得した在庫情報を出力しています。

未分類

Posted by ぼっち