基于终端指令的持久化存储
- 该方法只可以将parser方法的返回值存储到本地指定后缀的文件当中
- 执行指令 scrapy crawl spiderName -o filePath
基于管道的持久化存储
- 在爬虫文件当中进行数据解析
- 在items.py中定义相关属性
- 步骤一中解析出了几个字段的关键字就在此定义几个属性
- 在爬虫文件当中将解析到的数据存储封装到Item类型的对象当中
- 这里需要注意的是格式:item[属性] = 属性值
- 注意:不能使用 点 的形式调用
- 将Item类型的对象提交给管道
- yield item
- 在管道文件当中,接收爬虫文件提交过来的Item对象,且对其进行任意形式的持久化存储
- pipelines.py里面封装的process_item()方法是用来接受item对象的,参数item就是接收到的item对象
- process_item()该方法一次只能就收一个item,该方法会被调用很多次
- 在持久化存储的时候需要重写父类的两个方法
fp = None def open_spider(self, spider): print('我是open_spider(),我只会在爬虫开始的时候执行一次') self.fp = open('文件路径', 'a+', encoding = 'utf-8') def close_spider(self, spider): print('我是close_spider(),我只会在爬虫结束的时候执行一次') self.fp.close()
- 在配置文件中开启管道机制
- 配置文件当中有一个名为ITEM_PIPELINES的字典,将该字典的注释去掉
基于管道实现数据的备份
- 将爬取到的数据存储到不同的载体中