【问题标题】:scrapy custom output processorscrapy 自定义输出处理器
【发布时间】:2018-11-19 23:39:35
【问题描述】:

我正在将 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

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    您已将加载程序命名为 MyItemLoader,但您的蜘蛛使用 ItemLoader(可能是 scrapy 的)。
    如果你更新你的代码以使用自定义加载器,你应该得到你想要的结果。

    我还建议不要将您的物品类别命名为 Item,因为这可能会造成混淆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多