物事を整理しておくために、スパイダーが投入する 3 つのアイテム クラスがあると判断しました。
各アイテム クラスには、入力されるさまざまなフィールドがあります。
class item_01(Item):
item1 = Field()
item2 = Field()
item3 = Field()
class item_02(Item):
item4 = Field()
item5 = Field()
class item_03(Item):
item6 = Field()
item7 = Field()
item8 = Field()
同じアイテムでクロールするページが複数あります。スパイダーでは、XPathItemLoader を使用して「コンテナー」を設定します。
目標は、項目を mysql パイプラインに渡して単一のテーブルに入力することです。しかし、ここに問題があります。
3 つのコンテナー (ページごと) を生成すると、それらは 3 つの別個のコンテナーとしてパイプラインにそのまま渡されます。それらは独自の BaseItem としてパイプラインを通過し、mysql テーブルのセクションのみを入力し、他の列は「NULL」のままにします。
私がやりたいことは、これら 3 つのコンテナーを単一の BaseItem に再パッケージ化して、単一の ITEM としてパイプラインに渡されるようにすることです。
アイテムを再パッケージ化することに関して何か提案はありますか? スパイダーかパイプラインか?
ありがとう