当前位置: 首页 > article >正文

【Scrapy】Scrapy教程7——存储数据

上一节我们对爬虫程序的默认回调函数parse做了改写,提取的数据可以在Scrapy的日志中打印出来了,光打印肯定是不行的,还需要把数据存储,数据可以存到文件,也可以存到数据库,我们一一来看。

存储数据到文件

首先我们看看如何将数据存储到文件,在讲[[【Scrapy】Scrapy教程5——第一个Scrapy项目]]时,我们改写了prase函数,将首页存储到了一个shouye.html文件中,这便是我们的简单的数据存储,但这个存储方式是我们纯手写的代码,存的是整个页面,并非我们想要的数据。
这节主要讲存储数据,我们看下通过Scrapy命令直接存储数据,在这之前我们将parse函数修改下。

def parse(self, response):
        # 从获取的所有文章中提取链接和标题
        for article in response.css(".card")[1:]:
            yield {
   
                "title": article.xpath("./a").css("span::text").get(),
                "link": self.start_urls[0] + article.xpath("./a/@href").get(),
            }

然后,我们在到命令行中,运行以下命令。

scrapy crawl shouye -o titles.json

上面这条命令会将我们提取的数据存储到titles.json文件中,存储后的效果如下图所示。
在这里插入图片描述

我们会发现,存储的数据没有错,但是被整体存到了一个大的字典中,这不是我想要的结果,我只要数据一行一行的存储下来就好了,我们可以用以下命令。

scrapy crawl shouye -o titles.jsonl

没错,我们换个存储格式,就可以了。
在这里插入图片描述

存储数据到数据库

上面这种方法存储简单的数据可以,对于复杂结构的数据存储,就要引入Items和pipelines了。

Items

我们爬取页面的目标就是将非结构化数据提取为结构化数据,而Item就是Scrapy提供的一个类,用于定义通用输出数据格式的。Scrapy可以将提取的数据,作为Item返回,类似python的键值对。

Item Types

Scrapy通过itemadapter支持字典、Item对象、数据类对象、attrs对象几种Item类型。

  • 字典:类似Python的键值对字典
  • Item对象:Item提供的一个类似dict的API,可以支持更高级的特性
  • dataclass对象:允许定义具有字段名称的项目类,可以指定字段的类型和元数据
  • attrs对象:允许定义具有字段名称的项目类,可以指定字段的类型和元数据

http://www.kler.cn/a/554520.html

相关文章:

  • 【每日德语】leuchten 发光
  • HarmonyOS全栈开发指南:从入门到精通,构建万物智联的未来生态(四)
  • Spark提交任务
  • android,flutter 混合开发,pigeon通信,传参
  • Sun-Panel:简洁且美观的导航首页开源项目!!
  • Nginx 请求转发配置指南
  • Brave132编译指南 MacOS篇 - 编译与运行(六)
  • C++ 无锁队列:原理与实现
  • 从0到1:固件分析
  • HarmonyOS开发,遇到 Object.assign(this, source)报错怎么解决?
  • 大数据治理中的数据安全:以类脑科学研究为背景的探讨
  • 使用Dify将AI机器人嵌入到你的前端页面中及chrome的扩展应用
  • Oracle和MySQL的分页查询语句
  • BFS算法——层层推进,最短之路,广度优先搜索算法的诗意旅程(下)
  • 网络安全钓鱼邮件测试 网络安全 钓鱼
  • netcore 启用gzip压缩及缓存
  • 个人搭建CDN加速服务 特网科技
  • 连续学习、增量学习有哪些应用场景?
  • 23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成
  • 自适应SQL计划管理(Adaptive SQL Plan Management)在Oracle 12c中的应用