〖Python网络爬虫实战⑳〗- 数据存储之CSV操作实战

news2024/12/23 14:40:10
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)

        即将转为付费专栏,更多详细请看,五一会有优惠活动哦。

关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战⑲〗- 数据存储之CSV文件

🌟上节回顾

我们通过前面的学习了解到了 CSV 文件的写入和读取方式。这也是一种常用的数据存储方式,需要我们熟练掌握。我们通过介绍了,CSV是一种常用的文件格式,可以用于存储纯文本数据,并且每行数据都使用逗号分隔。看看今天学啥吧。

⭐️CSV操作实战

我们前面学习了理论知识,那么我们今天来和大家介绍学习一下CSV实战操作,看看前面学习的效果怎么样,今天,这个案例,特别简单。通过这个案例,大家就可以举一反三,怎么保存成CSV文件。

🌟确定目标

首先,我们对目标网址进行数据采集。我们可以清楚的看到,在2022年中新财富500富人榜。我们现在想把数据保存下来,发现复制粘贴太麻烦,我们就借助python工具,可以我们数据获取下来,怎么保存到本地呢。这里,我们用之前学到的方法,用字典的方法写入数据。保存成CSV文件。那么,下面看看怎么操作吧。

确定好我们的目标网址之后,我们要找到我们需要的数据源,通过开发者工具分析,我们不难发现其数据地址。

🌟获取数据

我们首先发送请求,获得数据。然后解析数据,获取我们想要的数据,因为,我们之前说过,没有讲怎么保存数据,本文重点讲如何保存数据,保存成CSV文件。

import requests

url = 'https://service.ikuyu.cn/XinCaiFu2/pcremoting/bdListAction.do?method=getPage&callback=jsonpCallback&sortBy=&order=&type=4&keyword=&pageSize=15&year=2022&pageNo=1&from=jsonp&_=1680092323527'


headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}

res = requests.get(url,headers=headers)

html_data = re.findall('jsonpCallback\((.*?)\)',res.text)[0]

我们发现,我们得到了这样jsonpCallback()的数据,可能就有人担心了,那这种情况,我们该怎么办呢,不要慌,我们只需要正则表达式就可以。

🌟写入字典

我们把刚刚获取到的数据,写入字典,我们看看代码怎么实现。

for index in json.loads(html_data)['data']['rows']:
    # print(index)
    dit = {
        '姓名':index['name'],
        '财富值':index['assets'],
        '主要公司':index['company'],
        '相关行业': index['industry'],
        '公司总部':index['addr'],
        '排名': index['rank'],
    }

我们先把数据存入到字典里面,然后,方便我们写入csv文件里面,我们看看打印出来的字典数值是怎么样子的。

🌟保存CSV

下面就是数据的写入了。其实,把字典数值写入到csv文件里面,特别简单,只需呀四行代码就可以实现。

我们在这里注意一下,在保存CSV文件时,需要使用有效的编码方式。如果使用不同的编码方式,则可能会导致数据处理过程中出现问题。例如,如果CSV文件中包含中文字符,则需要使用UTF-8编码方式保存文件。

f = open('财富榜.csv',mode='a',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=['姓名','财富值','主要公司','相关行业','公司总部','排名'])
csv_writer.writeheader()

在这段代码中,我们使用 Python 的 open() 函数打开了一个名为 "财富榜.csv" 的文件,并使用 csv.DictWriter() 函数创建了一个 csv_writer 对象。fieldnames 参数用于指定字段名称,这里我们指定了 "姓名"、"财富值"、"主要公司"、"相关行业"、"公司总部"、"排名" 六个字段。

然后,我们使用 csv_writer.writeheader() 方法写入表头,表头包括了字段名称。

最后,我们使用 csv_writer.write() 方法向文件中写入数据,数据内容为一个字典对象。

需要注意的是,在写入数据之前,我们需要使用 csv.DictWriter() 函数来创建一个 DictWriter 对象,并使用 fieldnames 参数来指定字段名称。此外,我们还需要使用 newline='' 参数来避免在 Windows 系统中出现换行符问题。

下面我们直接写入字典数值。这样就把字典里面的内容写入到了CSV文件里面。

csv_writer.writerow(dit)

这时候,我们就会在文件夹里面找到财富值的csv文件,我们打开看看效果。

在这里,我只采集了第一页的数据,也就是前15的数据,如果,我们想进行多页数据采集,只需要对网址进行改变,我们会发现网址有相似的规律。直接for循环遍历就可以,这里,就不过多解释。

总结

我们在学完这个案例之后,大家就会明白这个其实很简单,其他的只需要模仿这个来写就可以了。

CSV文件实战需要考虑多个方面,包括选择合适的文件格式、设置正确的文件头、使用有效的编码方式等。我们这里就不过多介绍,我们还是数据库用到的机会比较大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/473111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDBC数据库连接技术学习笔记

1. 概述 本笔记是学习尚硅谷教育的23版jdbc的课后笔记 1.1 JDBC概念和理解 1. jdbc是(Java Database Connectivity)单词的缩写,翻译为java连接数据库 2. jdbc是java程序连接数据库的技术统称 3. jdbc由java语言的规范(接口)和各个数据库厂商的实现驱动(jar)组成 4. jdbc是一…

Mysql 判断语句

目录 5 判读 5.1 if ... then ...->示例演示 局部变量 -> 打包储存过程 5.2 case 5.2.1 语法一 5.2.2 语法二 -> 示例演示 5.3 while 循环 ->有条件循环 5.3.1 示例演示 5.4 repeat 循环 -> 满足条件 -> 退出循环 5.4.1 示例演示 5.5 loop 5.5.1…

【c语言小项目】基于easyX的俄罗斯方块

EeayX是针对 C/C 的简单图形库插件,本项目基于easyX游戏框架下实现俄罗斯方块游戏。 俄罗斯方块功能实现中主要运用了二维数组的循环遍历。能够实现基本功能,暂未实现旋转 c语言系列专栏:c语言之路重点知识整合 更多相关:c语…

AI VS 好莱坞?新时代电影工作流;MJ制作微信表情包的麻瓜教程;关于ControlNet的一切;AI创业真钱景 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『OpenAI通过了一大批GPT-4申请』大量放号ing~快去看邮箱! 🤖 『小马智行 | 广州南沙区开启车内无安全员的自动…

opencv-python加载pytorch训练好的onnx格式线性回归模型

opencv是一个开源的图形库,有针对java,c,python的库依赖,它本身对模型训练支持的不好,但是可以加载其他框架训练的模型来进行预测。 这里举一个最简单的线性回归的例子,使用深度学习框架pytorch训练模型,最后保存模型为…

【软考备战·希赛网每日一练】2023年4月28日

文章目录 一、今日成绩二、错题总结第一题第二题第三题 三、知识查缺 题目及解析来源:2023年04月28日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 大体了解即可,题目要考察的核心意思:确定的有限自动机和不确定的…

js 操作数组内容

js 操作数组内容 数组添加元素(更改原数组) push和unshift会返回添加了新元素的数组长度 push从数组最后加入,unshift从数组最前面加入 const arr ["a", "b", "c"]; arr.push("d"); //返回4…

数据结构基础day9

题目&#xff1a;187. 重复的DNA序列 解法1&#xff1a;哈希表 class Solution { public:vector<string> findRepeatedDnaSequences(string s) {vector<string> ans;unordered_map<string, int> mp;int ns.size(), L10;for(int i0; i<n-L; i){ //从开头…

【fluent UDF】warning: unused variable警报:存在未使用的变量

一、问题背景 在编译UDF时&#xff0c;出现如下错误 curing_heat_v3.c: In function ‘iter_ending’: curing_heat_v3.c:105:14: warning: unused variable ‘volume_sum’ [-Wunused-variable] real volume_sum0.0; curing_heat_v3.c:104:14: warning: unused variable ‘…

【Python零基础学习入门篇②】——第二节:Python的常用语句

⬇️⬇️⬇️⬇️⬇️⬇️ ⭐⭐⭐Hello&#xff0c;大家好呀我是陈童学哦&#xff0c;一个普通大一在校生&#xff0c;请大家多多关照呀嘿嘿&#x1f601;&#x1f60a;&#x1f618; &#x1f31f;&#x1f31f;&#x1f31f;技术这条路固然很艰辛&#xff0c;但既已选择&…

网络编程之简单socket通信

一.什么是Socket? Socket&#xff0c;又叫套接字&#xff0c;是在应用层和传输层的一个抽象层。它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。 socket分为流socket和数据报socket&#xff0c;分别基于tcp和udp实现。 SOCK_STREAM 有以下…

苦学58天,最后就这结果......

背景 非计科大专一枚&#xff0c;当初学的机械自动化专业。大学完全可以说是玩过来的&#xff0c;临近毕业开始慌了&#xff0c;毕业后一直没能找到工作&#xff0c;在高中同学&#xff08;211 计科&#xff09;的引领下&#xff0c;入坑程序员&#xff0c;学的软件测试。 从…

Lombok简介

Lombok简介 1、lombok简介2、springboot整合lombok 1、lombok简介 Lombok是一个第三方的Java工具库&#xff0c;会自动插入编辑器和构建工具。Lombok提供了一组非常有用的注解&#xff0c;用来消除Java类中的大量样板代码&#xff0c;比如setter和getter方法、构造方法等。只需…

Vue(简单了解Cookie、生命周期)

一、了解Cookie 类似于对象响应携带数据 输入用户名密码跳转到指定页面 点击指定页面中其中一个按钮跳转到另一个指定页面&#xff08;再不需用输入用户名密码&#xff09; 例如现在很多浏览器实现七天免密登录 简单理解&#xff1a;就是在网站登录页面之后&#xff0c;服务…

新建Django项目

1. 创建项目 使用Django提供的命令&#xff0c;可以创建一个Django项目实例需要的配置项——包括数据库配置、Django配置和应用程序配置的集合。新建Django项目命令的语法格式如下&#xff1a; django-admin startproject 工程名称例如&#xff1a;想要在D:\的pythonProject目…

Mysql 存储过程 / 存储函数

目录 0 课程视频 1 基本语法 1.0 作用 ->在数据库中 封装sql语句 -> 复用 -> 减少网络交互 ->可接收参数返回数据 1.1 创建 1.2 调用 1.3 查看 1.4 删除 1.5 ; 封号结束符 改成 $$ 双刀符合结束语句 -> 因为打包封号结束有冲突 1.6 在cmd 中定义 存储过…

基于 SpringBoot+Vue+Java 的财务管理系统(附源码,教程)

文章目录 一 简介第二.主要技术第三、部分效果图第四章 系统设计4.1功能结构4.2 数据库设计4.2.1 数据库E/R图4.2.2 数据库表 第五章 系统功能实现5.1管理员功能模块 一 简介 财务管理系统的需求和管理上的不断提升&#xff0c;财务管理系统的潜力将无限扩大&#xff0c;财务管…

Postman预请求脚本、测试脚本(pre-request scripts、tests常用工作总结)

文章目录 Postman预请求脚本&#xff08;pre-request scripts工作常用总结&#xff09;Postman预请求脚本Postman测试脚本预请求脚本和测试脚本有什么区别常用工作总结登录接口返回的是Set-Cookie标头 Postman预请求脚本&#xff08;pre-request scripts工作常用总结&#xff0…

Spring Boot配置文件及日志信息

目录 前言&#xff1a; Spring Boot优点 配置文件 配置文件格式 读取配置文件 properties配置文件格式 properties优缺点分析 yml配置文件格式&#xff08;另一种标记语言&#xff09; yml优缺点分析 Spring Boot 不同平台配置文件规则 日志信息 日志的功能 Sprin…

Springboot +Flowable,设置任务处理人的四种方式(一)

一.简介 学习下UserTask 设置用户的三种方式&#xff0c;至于如何设置用户组&#xff0c;下篇文章再聊。 现在&#xff0c;假设我有如下一个简单的流程图&#xff1a; 那么该如何设置这个用户节点的处理人&#xff1f; 二.第一种&#xff1a;指定具体用户 第一种方式&…