📜  Scrapy – 物品加载器(1)

📅  最后修改于: 2023-12-03 15:34:52.300000             🧑  作者: Mango

Scrapy – 物品加载器

Scrapy是一种功能强大的Python网络爬虫框架,具有高效性和卓越的可扩展性。物品加载器是Scrapy框架中不可或缺的一部分。它是在爬虫中处理数据的一种方便且简单的方式。

物品加载器的作用

在Scrapy中,爬虫可以通过选择器(Selector)来提取数据。但是,对于复杂的网站或需要处理大量数据的情况,使用选择器变得不太有效。此时,Scrapy的物品加载器(Item Loader)就可以用来极大地简化这个问题。

物品加载器可以在数据收集的同时对其进行处理和转换。例如:将数据转换为统一格式,清洗数据,提取HTML标记等。

物品加载器的优势

使用物品加载器的主要优势在于其可重复使用性和可维护性。因为它允许您将数据收集和处理逻辑分离,这样您就可以轻松地重复使用收集逻辑,并对其进行修改,以适应网站的变化。

使用物品加载器的步骤

1.导入ItemLoader类

from scrapy.loader import ItemLoader

2.创建ItemLoader对象

item_loader = ItemLoader(item=MyItem(), response=response)

注意:这里的MyItem是一个自定义的item。

3.添加选择器

item_loader.add_xpath('field_name', 'xpath_expression')

4.添加处理程序

item_loader.add_xpath('field_name', 'xpath_expression', SomeProcessor())

5.返回处理完的item对象

return item_loader.load_item()
物品加载器中的处理程序

处理程序用于处理提取的数据。Scrapy提供了许多内置的处理程序,如下所示:

  • MapCompose:将每个提取的值应用函数
  • TakeFirst:从列表中获取第一个非空值
  • Compose:将多个处理程序组合到一起

例如:要在价格字段中删除货币符号“$”并将其转换为浮点数,则可以使用以下代码:

from scrapy.loader.processors import MapCompose

item_loader.add_xpath('price', '//div[@class="price"]/text()', MapCompose(lambda x: x.replace('$', ''), float))
总结

物品加载器是Scrapy框架的一个很好的功能,它使爬虫能够更有效地处理数据,并将数据处理逻辑分离出来。使用物品加载器,您可以轻松地重复使用数据处理逻辑并对其进行修改,以适应网站的变化。不同爬虫需求的处理程序可根据需求自定义扩展,达到快速灵活方便效果。