如何动态定义拼凑项目

时间:2019-04-15 15:07:20

标签: python scrapy

我想将此类传递给草率的Itemloader。 我知道这堂课错了,但是怎么办呢?

class DummyItem(scrapy.Item):

    def __init__(self, num):
        self.num = num
        super(DummyItem, self).__init__()

    self.num = scrapy.Field()

1 个答案:

答案 0 :(得分:0)

您需要在蜘蛛中导入ItemLoaderDummyItem项目,然后使用您的项目类初始化项目加载器。

from scrapy.loader import ItemLoader
from myproject.items import DummyItem

def parse(self, response):
    l = ItemLoader(item=DummyItem(), response=response)
    l.add_xpath('num', '//div[@class="product_num"]')
    return l.load_item()

如果您声明自己的ItemLoader,则可以指定default_item_class,如下所示:

class DummyItemLoader(ItemLoader):
    default_item_class = DummyItem