【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对象:允许定义具有字段名称的项目类,可以指定字段的类型和元数据
相关文章:
【Scrapy】Scrapy教程7——存储数据
上一节我们对爬虫程序的默认回调函数parse做了改写,提取的数据可以在Scrapy的日志中打印出来了,光打印肯定是不行的,还需要把数据存储,数据可以存到文件,也可以存到数据库,我们一一来看。 存储数据到文件 首先我们看看如何将数据存储到文件,在讲[[【Scrapy】Scrapy教程…...
QILSTE H4-108TCG/5M高亮翠绿光LED灯珠 发光二极管LED
H4-108TCG/5M:高亮纯绿光LED的复杂特性与突发性挑战 在现代电子设备的复杂世界中,H4-108TCG/5M型号的高亮纯绿光LED以其独特的参数和复杂的特性脱颖而出。这款LED不仅在尺寸上做到了极致精巧,还在光电参数、可靠性测试和实际应用中展现出令人…...
Python中numpy.loadtxt()函数的用法
numpy模块的loadtxt()函数用于快速读取简单格式文件的内容,常用于csv文件的读取。 1 loadtxt()函数的格式 loadtxt()函数的格式如图1所示,该函数的返回值是读取到的数据,其类型为numpy.ndarray。 图1 loadtxt()函数的格式 其中,…...
Windows系统安装GPU驱动/CUDA/cuDNN
1、驱动安装步骤 1.1下载驱动 通过浏览器访问Download The Official NVIDIA Drivers | NVIDIA 1.2安装驱动 1.3检查 打开【设备管理器】—【显示适配器】 2、CUDA安装步骤 2.1下载CUDA 官网链接CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA 开发者 2.2安装CUDA 3、cuDN…...
nessus kali 卸载
安装请看这篇Nessus漏扫工具的安装与使用(Windows与Linux)_nessus license key-CSDN博客 Download Tenable Nessus | Tenable 离线安装 Tenable Nessus (Tenable Nessus 10.8) systemctl stop nessusd Remove Nessus Run the …...
使用Geotools读取DEM地形数据实战-以湖南省30米数据为例
目录 前言 一、DEM地形数据介绍 1、DEM数据简介 2、DEM应用领域 3、QGIS中读取DEM数据 二、GeoTools解析地形 1、Maven中依赖引用 2、获取数据基本信息 三、总结 前言 随着全球数字化进程的加速,各类地理空间数据呈爆炸式增长,DEM 数据作为其中的…...
基于WebGIS技术的校园地图导航系统架构与核心功能设计
本文专为IT技术人员、地理信息系统(GIS)开发者、智慧校园解决方案架构师及相关领域的专业人士撰写。本文提出了一套基于WebGIS技术的校园地图导航系统构建与优化方案,旨在为用户提供高效、智能、个性化的导航体验。如需获取校园地图导航系统技…...
《养生方法》(一)
一、基础生活习惯 饮食管理 均衡营养:每日摄入多彩蔬果(如胡萝卜、西兰花、柑橘类)补充维生素C/E及膳食纤维;搭配鱼类、豆制品等优质蛋白质,保障免疫系统正常运作 清淡规律:减少高油盐食物…...
Python常见面试题的详解9
1. 如何找出整数数组中第二大的数 要点 定义一个函数用于在整数数组里找出第二大的数。 若数组元素少于 2 个,则返回 None。 借助两个变量 first 和 second 来跟踪最大数和第二大数。 可以添加异常处理,以应对输入非整数数组的情况。 若数组包含重复…...
MAVSDK - Custom Mavlink处理
编译命令中开启 Custom Mavlink 编译 cmake -DCMAKE_BUILD_TYPERelease -DMAVLINK_DIALECTcustom -DBUILD_CUSTOM_MAVLINKON -DCUSTOM_MAVLINK_PATH"G:/Custom_Mavlink" -DBUILD_CUSTOM_PLUGINSON -DENABLED_CUSTOM_PLUGINS"speaker" -DENABLED_PLUGINS&qu…...
java每日精进 2.13 MySql迁移人大金仓
1.迁移数据库 1. 数据库创建语句 MySQL: CREATE DATABASE dbname; 人大金仓(Kingbase): 在人大金仓中,CREATE DATABASE 的语法通常相同,但可能需要特别注意字符集的指定(如果涉及到多语言支持…...
【R语言】回归分析与判别分析
一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…...
ES6中Object.defineProperty 的详细用法和使用场景以及例子
ES6 Object.defineProperty() 用法总结 Object.defineProperty() 是 ES5 引入的一个方法,ES6 继续强化了该方法的使用,它允许我们为对象的属性定义或修改 属性描述符。它能够控制对象属性的行为,如读写权限、可枚举性和可配置性。 1. Objec…...
揭秘云计算 | 5、关于云计算效率的讨论
一、 公有云效率更高? 解:公有云具有更高的效率。首先我们需要知道效率到底指的是什么。这是个亟须澄清的概念。在这里效率是指云数据中心(我们将在后文中介绍其定义)中的IT设备资源利用率,其中最具有代表性的指标就是…...
【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解
Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我们已经将进程通信部分讲完了,现在我们来讲一个进程部分也非常重要的知识点——信号,信号也是进程间通信的一…...
如何查询网站是否被百度蜘蛛收录?
一、使用site命令查询 这是最直接的方法。在百度搜索框中输入“site:你的网站域名”,例如“site:example.com”(请将“example.com”替换为你实际的网站域名)。如果搜索结果显示了你的网站页面,并且显示了收录的页面数量…...
什么是网络安全审计?网络安全审计的作用...
网络安全审计通过对网络数据的采集、分析、识别,实时动态监测通信内容、网络行为和网络流量,发现和捕获各种敏感信息、违规行为,实时报警响应,全面记录网络系统中的各种会话和事件,实现对网络信息的智能关联分析、评估…...
EasyExcel实现excel导入(模版上传)
目录 效果pom.xmlapplication.ymlcontrollerservice依赖类前台vue代码某个功能如果需要添加大量的数据,通过一条条的方式添加的方式,肯定不合理,本文通过excel导入的方式来实现该功能,100条数据导入成功85条,失败15条,肯定需要返回一个表格给前台或者返回1个错误excel给前…...
Vue 3最新组件解析与实践指南:提升开发效率的利器
目录 引言 一、Vue 3核心组件特性解析 1. Composition API与组件逻辑复用 2. 内置组件与生命周期优化 3. 新一代UI组件库推荐 二、高级组件开发技巧 1. 插件化架构设计 2. 跨层级组件通信 三、性能优化实战 1. 惰性计算与缓存策略 2. 虚拟滚动与列表优化 3. Tree S…...
【前端】如何安装配置WebStorm软件?
文章目录 前言一、前端开发工具WebStorm和VS Code对比二、官网下载三、安装1、开始安装2、选择安装路径3、安装选项4、选择开始菜单文件夹5、安装成功 四、启动WebStorm五、登录授权六、开始使用 前言 WebStorm 是一款由 JetBrains 公司开发的专业集成开发环境(IDE…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
