這是一個老問題,但我覺得upvoted的答案並不是真的正確。
有沒有我之所以想要使用Scrapy的Item
類的原因?
幅刮削的Scrapy模型本質:
- 與蜘蛛收集數據。
- 將數據捆綁到項目中。
- 使用料品管線處理這些料品。
- 用另一個物品管道在某處存儲這些物品。
步驟3和4包含「大」物品管線。如果您沒有繼承Item
,則無法將對象輸入到物品管道中,因此您必須對這些字段進行規範化並將項目插入到您的數據庫中,所有這些都在您的蜘蛛中。
如果做子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()
比賽情況將通過的SQLAlchemy的線程池來照顧。磁盤IO比網絡IO慢得多,因此不應該存在重大風險 – disappearedng
根據您的使用情況,存儲數據花費的時間可能很長。例如,您必須在存儲之前處理數據,或者存儲位於不同的計算機上。 – Dikei