爬虫蜘蛛项目加载器Item Loader类详解之使用项目加载器填充项目 (18)python SCRAPY最新教程1.51以上版本

项目加载程序提供了一种方便的机制来填充已删除的项目。尽管可以使用他们自己的类字典API来填充项目,但是项目加载器通过自动执行一些常见任务(例如在分配原始提取数据之前解析原始提取数据),提供了一种更方便的API,用于从抓取过程中填充它们。

换句话说,Items提供了抓取数据的容器,而Item Loaders提供了填充该容器的机制。

项目加载器旨在提供灵活,高效和简单的机制,用于通过蜘蛛或源格式(HTML,XML等)扩展和覆盖不同的字段解析规则,而不会成为维护的噩梦。

使用项目加载器填充项目

要使用Item Loader,必须先实例化它。您可以使用类似dict的对象(例如Item或dict)实例化它,也可以不使用一个,在这种情况下,Item使用ItemLoader.default_item_class 属性中指定的Item类在Item Loader构造函数中自动实例化。

然后,您开始将值集合到Item Loader中,通常使用 Selectors。您可以向同一项目字段添加多个值; Item Loader将知道如何使用适当的处理函数“加入”这些值。

下面是Spider中典型的Item Loader用法,使用Items章节中声明的Product项:

from scrapy.loader import ItemLoader  from myproject.items import Product    def parse(self, response):      l = ItemLoader(item=Product(), response=response)      l.add_xpath('name', '//div[@]')      l.add_xpath('name', '//div[@]')      l.add_xpath('price', '//p[@]')      l.add_css('stock', 'p#stock]')      l.add_value('last_updated', 'today') # you can also use literal values      return l.load_item()

 

通过快速查看该代码,我们可以看到该name字段是从页面中的两个不同XPath位置提取的:

  1. //div[@]
  2. //div[@]

换句话说,通过使用该add_xpath()方法从两个XPath位置提取数据来收集数据。这是稍后将分配给该name字段的数据。

之后,类似的调用用于pricestock字段(后者使用CSS选择器和add_css()方法),最后使用不同的方法last_update直接用字面值(today)填充字段:add_value()

最后,收集到的所有数据时,该ItemLoader.load_item()方法被调用,实际上返回填充了先前提取并与收集到的数据的项目add_xpath(), add_css()add_value()调用。

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。