我正在使用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
答案 0 :(得分:1)
您已将装载机命名为MyItemLoader
,但您的蜘蛛使用了ItemLoader
(可能是草木的)。
如果您更新代码以使用自定义加载程序,则应该获得所需的结果。
我还建议您不要命名您的商品类Item
,因为那样可能会造成混淆。