ECサイトをスクレイピングしたいんだ、すでにHTMLデータはモデルにある。sku毎に1レコード使ってデータをスクレイピングしたいんだよね。

2024年6月13日

各SKUごとにHTMLデータを使用してデータをスクレイピングするメソッドを作成することができます。以下は、そのためのサンプルコードです。

python
class CustomScrayping(Scrayping):
    @staticmethod
    def scrape_sku_data(sku_instance):
        # SKUインスタンスからHTMLデータを取得
        html_content = sku_instance.html_content
        
        # BeautifulSoupを使用してHTMLを解析
        soup = BeautifulSoup(html_content, 'html.parser')
        
        # 各データをスクレイピング
        manufacturer_part_number = CustomScrayping.scrape_manufacturer_part_number(soup)
        stock = CustomScrayping.scrape_stock(soup)
        price = CustomScrayping.scrape_price(soup)
        # 他のデータも同様にスクレイピング
        
        # スクレイピングされたデータを使用してSKUインスタンスを更新
        sku_instance.manufacturer_part_number = manufacturer_part_number
        sku_instance.stock = stock
        sku_instance.price = price
        # 他のデータも同様に更新
        
        # SKUインスタンスを保存
        sku_instance.save()
    
    @staticmethod
    def scrape_manufacturer_part_number(soup):
        # 製造元パート番号をスクレイピングして返す
        return manufacturer_part_number
    
    @staticmethod
    def scrape_stock(soup):
        # 在庫情報をスクレイピングして返す
        return stock
    
    @staticmethod
    def scrape_price(soup):
        # 価格情報をスクレイピングして返す
        return price
    # 他のデータをスクレイピングするためのメソッドを追加

# SKUインスタンスを取得
sku_instance = SKU.objects.get(id=1)  # ここでIDは適切なものに置き換える

# スクレイピングメソッドを呼び出してデータをスクレイピングし、SKUインスタンスを更新
CustomScrayping.scrape_sku_data(sku_instance)

この例では、Scrayping クラスを継承して CustomScrayping クラスを作成し、各SKUごとにHTMLデータを使用してデータをスクレイピングするためのメソッド scrape_sku_data を定義しています。このメソッド内で、必要なデータをスクレイピングしてSKUインスタンスを更新し、保存します。

未分類

Posted by ぼっち