UpdateItem

UpdateItem用于更新数据,继承至Item,所以使用方式基本与Item一致,下载只说不同之处

更新逻辑

更新逻辑借助了数据库的唯一索引,即插入数据时发现数据已存在,则更新。因此要求数据表必须存在唯一索引,才能使用UpdateItem

比如将title设置唯一,要求每条数据的title都不能重复

-w781

或联合索引,要求title与url不能同时重复

-w761

指定更新的字段

方式1:指定__update_key__

  1. from feapder import UpdateItem
  2. class SpiderDataItem(UpdateItem):
  3. __update_key__ = ["title"] # 更新title字段
  4. def __init__(self, *args, **kwargs):
  5. # self.id = None
  6. self.title = None
  7. self.url = None

方式2:赋值update_key

  1. from feapder import UpdateItem
  2. class SpiderDataItem(UpdateItem):
  3. def __init__(self, *args, **kwargs):
  4. # self.id = None
  5. self.title = None
  6. self.url = None
  7. item = SpiderDataItem()
  8. item.update_key = "title" # 支持列表、元组、字符串

方式3:将普通的item转为UpdateItem,然后再指定更新的key

  1. from feapder import Item
  2. class SpiderDataItem(Item):
  3. def __init__(self, *args, **kwargs):
  4. # self.id = None
  5. self.title = None
  6. self.url = None
  7. item = SpiderDataItem()
  8. item = item.to_UpdateItem()
  9. item.update_key = "title"

推荐方式1,直接改Item类,不用修改爬虫代码