天天基金网高收益基金列表数据保存到Excle中#python爬虫小试牛刀之openpyxl

本文介绍了如何使用Python爬虫技术从天天基金网抓取高收益基金数据,并利用openpyxl模块将其保存到Excel文件中。通过分析网页内容,提取所需信息,并详细讲解了数据处理的关键步骤,包括解析字符串、转换为列表以及存储到Excel表格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

天天基金网高收益基金列表数据保存到Excle中#python爬虫小试牛刀之openpyxl

你好! 学习了openpyxl后,于是迫不及待的想练习一下,于是挑选了具有一定挑战性的天天基金网来进行爬取数据并保存练手,当然自己也搜索了其他人关于天天基金数据爬取的过程,但基本上都无法看懂,可能是我入行不深,这里我介绍一种小白都能看懂的方法,仅供大家参考学习。

1.最终得到的Excel表格:

我喜欢先将结果,将爬取的的数据采用openpyxl模块保存后的结果如下:
在这里插入图片描述 由于列表数据比较多,这里只截屏了一部分,大家可以去天天基金网上看看,其大致排布和这个是一样的。好了废话不多说,下面介绍一下爬取保存过程。

2.爬取+保存:

从标题我们不难看出,我们得到上面的结果 其实分两大步走,第一步是爬取,第二部就是保存了。保存的过程其实比较简单,仅仅涉及到一些基本的语句如:sheet.append(header)
sheet.append(rows),这里面的header和rows和我们的爬虫部分息息相关,所以这里就重点讲一下爬虫部分。

在这里插入图片描述 很多爬友都能进入到这个界面,就相当于你已经找到了爬取对的内容,但是对于内容的处理,很多人都讲得不够清楚,无法从根本上 提升我们的认知和知识。我们拷贝一部分出来重点分析一下。

过程分析:

这里先暂存一下数据:

var rankData = {datas:["002939|广发创新升级混合|混合型|2020-06-23|2.6236|1.78|6.39|12.69|29.36|45.26|121.64|145.97|148.08|42.17|173.69|3|1|1|0.15|0||211|1|1|10元|1.50%|0.15%|0.15%|1","519674|银河创新成长混合|混合型|2020-06-23|5.8228|0.94|9.08|9.97|26.17|46.08|121.46|139.04|147.14|44.53|482.28|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","005911|广发双擎升级混合A|混合型|2020-06-23|2.8574|1.95|7.00|12.83|27.51|39.95|121.34|||37.66|199.96|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","257070|国联安优选行业混合|混合型|2020-06-23|2.9781|2.75|8.72|12.24|31.08|54.21|118.03|131.61|95.03|51.10|266.94|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","161903|万家行业优选混合(LOF)|混合型|2020-06-23|1.7767|3.18|7.40|16.19|37.49|59.99|114.48|158.19|156.76|58.31|779.80|3|1|1|0.15|0||020,211|1|1|100元|1.50%|0.15%|0.15%|1","213001|宝盈鸿利收益灵活配置混合A|混合型|2020-06-23|2.0280|2.17|4.81|14.38|33.07|53.60|113.01|127.66|172.88|48.57|1,004.14|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","005689|中银医疗保健混合|混合型|2020-06-23|2.3956|2.35|4.84|19.61|42.67|60.26|112.75|145.40||55.50|145.52|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","005176|富国精准医疗混合|混合型|2020-06-23|2.8643|2.63|4.66|20.62|44.47|65.43|112.58|118.70||62.98|186.40|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","002408|中信建投医改混合A|混合型|2020-06-23|2.1648|3.57|4.77|23.10|45.58|68.21|110.79|81.92|107.95|65.76|116.48|3|1|1|0.12|0||211|1|1|1000元|1.20%|0.12%|0.12%|1","320007|诺安成长混合|混合型|2020-06-23|1.6930|0.36|9.30|9.16|33.52|38.09|110.31|130.34|68.29|36.20|152.93|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","162703|广发小盘成长混合(LOF)A|混合型|2020-06-23|2.9038|1.55|4.60|11.69|26.44|46.04|110.15|121.17|126.35|42.97|1,131.50|3|1|1|0.15|0||020,211|1|1|10元|1.50%|0.15%|0.15%|1","519026|海富通中小盘混合|混合型|2020-06-23|1.5470|3.62|7.65|21.05|50.49|53.78|109.91|98.08|78.43|46.64|54.70|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","000727|融通健康产业灵活配置混合A/B|混合型|2020-06-23|2.6680|1.18|5.29|20.02|45.63|69.72|108.93|140.58|168.14|64.29|166.80|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","002482|宝盈互联网沪港深混合|混合型|2020-06-23|2.3670|2.16|7.35|18.71|35.80|40.64|107.45|111.53|137.65|36.98|136.70|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","003095|中欧医疗健康混合A|混合型|2020-06-23|2.8430|2.97|4.87|20.88|56.04|66.65|106.76|95.40|177.98|64.05|199.66|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","000452|南方医药保健灵活配置混合|混合型|2020-06-23|3.2800|3.40|5.13|23.12|54.43|66.92|106.68|99.63|115.36|62.62|290.91|3|1|1|0.15|0||211|1|1|100元|1.50%|0.15%|0.15%|1","000924|宝盈先进制造混合A|混合型|2020-06-23|2.0310|2.37|4.96|14.2
### 使用 PySide6 和 openpyxl 实现 Excel 数据与 QTableWidget 的交互 #### 加载 Excel 数据至 QTableWidget 为了将 Excel 文件的数据加载到 `QTableWidget` 中,可以先利用 `openpyxl` 读取 Excel 文件的内容并解析成 Python 列表结构。之后遍历该列表,在 `QTableWidget` 上创建相应的行和列来填充这些数据。 ```python from PyQt6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QTableWidget import sys from openpyxl import load_workbook class MainWindow(QMainWindow): def __init__(self): super().__init__() table_widget = QTableWidget(self) workbook = load_workbook('example.xlsx') sheet = workbook.active rows = list(sheet.rows) column_count = max((cell.column for row in rows for cell in row)) row_count = len(rows) table_widget.setColumnCount(column_count) table_widget.setRowCount(row_count) for i, row in enumerate(rows): for j, cell in enumerate(row): item = QTableWidgetItem(str(cell.value)) table_widget.setItem(i, j, item) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec()) ``` 这段代码展示了如何通过 `load_workbook()` 函数打开一个现有的 Excel 工作簿,并获取活动的工作表对象[^1]。接着计算工作表的最大列数以及总行数设置给 `QTableWidget` 。最后迭代每一行列单元格,把它们转换为字符串形式并通过 `setItem()` 方法放置于对应的表格位置上。 #### 更新 Excel 文件中的数据 当用户在界面上修改了某些条目后,可以通过监听特定事件捕获变化并将更改同步回原始的 Excel 文档中: ```python def save_changes_to_excel(self): workbook = load_workbook('example.xlsx') sheet = workbook.active for row_index in range(self.table_widget.rowCount()): for col_index in range(self.table_widget.columnCount()): value = self.table_widget.item(row_index, col_index).text() sheet.cell(row=row_index + 1, column=col_index + 1, value=value) workbook.save('updated_example.xlsx') ``` 此函数会重新加载相同的 Excel 文件以便能够写入新的值。对于每一个被改变过的项,找到其对应的位置更新原文件内的相应单元格内容。完成所有必要的更正操作后调用 `save()` 来持久化变更结果到磁盘上的新文件里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值