python - scrapy自定义输出处理器

标签 python scrapy

我正在使用 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/

相关文章:

python - 使用 Tkinter 将输出复制到剪贴板的按钮

python - TFX - 无需序列化数据输入即可获得预测的 REST API

python - 使用 Python 和 Scrapy 进行递归爬取

python - 使用中间件防止scrapy重复访问网站

python - Scrapy 输出 [ 到我的 .json 文件中

python - 我可以 unstack() pandas 中列的子集吗?

python - 在 python 中快速查找

python - 完全或增量抓取——人们使用什么?

python - 如何使用 python 获取 scrapy 中的选择选项值

python - "An error occurred initiating application server. Failed to launch application server"适用于 Windows 7 上的 PgAdmin 4