我正在使用 scrapy 框架进行网页抓取项目,但我似乎不知道如何让自定义输出处理器工作。
我有一个像这样的项目类:
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 抓取字符串? scrapy 文档给出了这个例子,但我无法让它工作。
def lowercase_processor(self, values):
for v in values:
yield v.lower()
class MyItemLoader(ItemLoader):
name_in = lowercase_processor
最佳答案
您已将加载器命名为 MyItemLoader
,但您的爬虫使用 ItemLoader
(可能是 scrapy 的)。
如果您更新代码以使用自定义加载程序,您应该会得到您想要的结果。
我还建议不要命名您的项目类 Item
,因为这可能会造成困惑。
关于python - scrapy自定义输出处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53384211/