您现在的位置是:首页 >技术交流 >〖Python网络爬虫实战⑳〗- 数据存储之CSV操作实战网站首页技术交流

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

爱吃饼干的小白鼠 2023-06-26 04:00:02
简介〖Python网络爬虫实战⑳〗- 数据存储之CSV操作实战
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量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文件实战需要考虑多个方面,包括选择合适的文件格式、设置正确的文件头、使用有效的编码方式等。我们这里就不过多介绍,我们还是数据库用到的机会比较大。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。