这是一个老问题,但我觉得赞成的答案并不正确。
我有理由想使用 Scrapy 的Item
课程吗?
网页抓取的 Scrapy 模型本质上是:
- 用蜘蛛收集数据。
- 将该数据捆绑到项目中。
- 使用项目管道处理这些项目。
- 将这些项目存储在另一个项目管道的某个地方。
第 3 步和第 4 步组成了“大”项目管道。如果您不 subclass Item
,则无法将对象输入到项目管道中,因此您必须规范化字段并将项目插入到您的数据库中,所有这些都在您的蜘蛛中。
如果你做subclass Item
,你可以使你的项目处理代码更易于维护:
from scrapy.item import Item, Field
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import MapCompose, Identity
class Product(Item):
name = Field()
price = Field()
aisle = Field()
categories = Field()
class ProductLoader(XPathItemLoader):
default_item_class = Product
price_in = MapCompose(parse_price)
categories_out = Identity()