您现在的位置是:首页 >技术交流 >〖Python网络爬虫实战⑳〗- 数据存储之CSV操作实战网站首页技术交流
〖Python网络爬虫实战⑳〗- 数据存储之CSV操作实战
- 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
- 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)。
即将转为付费专栏,更多详细请看,五一会有优惠活动哦。
- 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。
最近更新
🌟上节回顾
我们通过前面的学习了解到了 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文件实战需要考虑多个方面,包括选择合适的文件格式、设置正确的文件头、使用有效的编码方式等。我们这里就不过多介绍,我们还是数据库用到的机会比较大。