我正在使用scrapy框架进行Web抓取项目,但似乎无法弄清楚如何使自定义输出处理器正常工作。
我有一个像这样的物品类:
class Item(scrapy.Item)
ad_type = scrapy.Field()
然后我的解析函数看起来像这样。我有2个要添加到ad_type的抓取字符串。我希望我的输出处理器功能根据从这2个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
最佳答案
您已将装载程序命名为MyItemLoader
,但您的蜘蛛程序使用的是ItemLoader
(可能是草皮的)。
如果您更新代码以使用自定义加载程序,则应获得所需的结果。
我也建议不要命名您的项目类Item
,因为这可能会造成混淆。
关于python - 拼凑的自定义输出处理器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53384211/