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

【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.lryc.cn/news/540006.html

相关文章:

  • QILSTE H4-108TCG/5M高亮翠绿光LED灯珠 发光二极管LED
  • Python中numpy.loadtxt()函数的用法
  • Windows系统安装GPU驱动/CUDA/cuDNN
  • nessus kali 卸载
  • 使用Geotools读取DEM地形数据实战-以湖南省30米数据为例
  • 基于WebGIS技术的校园地图导航系统架构与核心功能设计
  • 《养生方法》(一)
  • Python常见面试题的详解9
  • MAVSDK - Custom Mavlink处理
  • java每日精进 2.13 MySql迁移人大金仓
  • 【R语言】回归分析与判别分析
  • ES6中Object.defineProperty 的详细用法和使用场景以及例子
  • 揭秘云计算 | 5、关于云计算效率的讨论
  • 【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解
  • 如何查询网站是否被百度蜘蛛收录?
  • 什么是网络安全审计?网络安全审计的作用...
  • EasyExcel实现excel导入(模版上传)
  • Vue 3最新组件解析与实践指南:提升开发效率的利器
  • 【前端】如何安装配置WebStorm软件?
  • vllm专题(一):安装-GPU
  • php文件包含
  • 升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?
  • 分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现
  • MyBatis Plus核心功能
  • nginx ngx_http_module(10) 指令详解
  • 【ENSP】链路聚合的两种模式
  • Windows环境安装部署minimind步骤
  • 让大模型帮我设计crnn网络及可运行demo,gpt4o豆包qwendeepseek-r1
  • 代码随想录-- 第一天图论 --- 岛屿的数量
  • Mybatis MyBatis框架的缓存 一级缓存