Python Scrapy持久化存储
2019-07-24 本文已影响101人
我爱学python
基于终端指令的持久化存储
保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作;
执行输出指定格式进行存储:将爬取到的数据写入不同格式的文件中进行存储

基于管道的持久化存储
scrapy框架中已经为我们专门集成好了高效、便捷的持久化操作功能,我们直接使用即可:
items.py : 数据结构模板文件,定义数据属性;
pipelines.py : 管道文件,接受item类型的数据,进行持久化操作;
持久化流程:
在爬虫文件中获取到数据后,将数据封装到 items对象中;
通过 yield 关键字将items对象提交给pipelines管道进行持久化操作;
在管道文件中的process_item方法中接收爬虫文件提交过来的item对象,然后编写持久化存储的代码将item对象存储的数据进行持久化存储;
settings.py文件中开启管道:

终端持久化存储示例:
将糗事百科首页中的段子和作者数据爬取下来,然后进行持久化存储
爬虫程序

settings

执行:
scrapy crawl qiubai -o qiubai.csv

执行完之后的结果:

管道持久化存储示例:
爬取Boss直聘网中Python爬虫岗位的职位名称,薪资,公司名称
爬虫程序

items

pipelines

settings

执行:
scrapy crawl boss --nolog


基于MySQL的持久化存储
pipelines

settings

执行爬虫程序,并去数据库中查看数据

基于redis管道存储
pipelines

settings

执行代码并且查看redis中的数据

redis已经存在数据了,因为编码问题所以不显示中文.