拼凑的自定义输出处理器

时间:2018-11-19 23:39:36

标签: python scrapy

我正在使用scrapy框架进行Web抓取项目,但似乎无法弄清楚如何使自定义输出处理器正常工作。

我有一个类似的物品类:

class Item(scrapy.Item)

    ad_type = scrapy.Field()

然后我的解析函数看起来像这样。我有2个要添加到ad_type的抓取字符串。我希望我的输出处理器功能根据从这两个xpath刮取的内容分配标签。

def parse(self, response):

    l = ItemLoader(item=Item(), selector=listing)
    l.add_xpath('ad_type', '(.//div/@class)[1]')
    l.add_xpath('ad_type', '(.//div[contains(@class, "brand")]/@class)[1]')
    yield l.load_item()

如何获取我的输出处理器函数来访问添加到ad_type的2个xpath抓取字符串?繁琐的文档提供了此示例,但我无法使其正常工作。

def lowercase_processor(self, values):
    for v in values:
        yield v.lower()

class MyItemLoader(ItemLoader):
    name_in = lowercase_processor

1 个答案:

答案 0 :(得分:1)

您已将装载机命名为MyItemLoader,但您的蜘蛛使用了ItemLoader(可能是草木的)。
如果您更新代码以使用自定义加载程序,则应该获得所需的结果。

我还建议您不要命名您的商品类Item,因为那样可能会造成混淆。