当前位置: 首页 > news >正文

爬虫基础之爬取某基金网站+数据分析

声明: 本案例仅供学习参考使用,任何不法的活动均与本作者无关

网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台!

本案例所需要的模块:

1.requests 2.re(内置) 3.pandas 4.pyecharts

其他均需要 pip install 模块名

爬取步骤:

一.请求数据 模拟浏览器向服务器发送请求


F12 打开开发者模式 点击网络 搜索我们需要的数据 找到正确的接口

老样子 使用工具能够使我们节约时间 方便快捷但前提能够自己写就没问题


新建本地py文件复制过去 运行之后就可以看到与浏览器预览中一样的数据

接着我们需要对请求到的数据进行处理
这里我们使用正则是最好的
匹配所需的内容 即()里的

text = re.findall(r'datas:[(.*?)]',response.text)

二.提取数据 提取所需要的内容

然后我们观察放回的数据 把每条数据都提取出来

此时我们想该使用什么 去提取我们的数据呢 split字符串分割 or 正则
都不使用 此时选择eval函数去除引号 是最佳的选择

处理完之后就是一个个的元组 之后我们可以遍历元组保存数据

接着就是多页数据的采集 通过观察每一页的URL可知 pi参数控制着我们的页码
嵌套个for循坏 实现 翻页的操作

三.保存数据 保存数据到本地

_**因为这样保存的数据连个标头都没有 因此我们对照网站将表头写入

根据我们所拿取的数据对照 麻烦的话直接复制我的代码**_

# 保存的格式为utf-8-sig  单是utf-8的话会有乱码 看不懂 思密达with open('基金.csv', 'a', encoding='utf-8-sig', newline='
') as f:f.write('基金代码,基金简称,English,日期,基金净值,基金累计净值,日增长率,基金近1周,基金近1月,基金近3月,基金近6月,基金近1年,基金近2年,基金近3年,今年来,成立来,False,False,False,False,手续费,False,False,False,False,False')

后面发现需要进一步的处理csv文件里的数据 我就随便给个表头写入 后续通过pandas 提取所需要的列形成新的表格

以下是本案例的源代码 供大家交流使用

import requests
import re
import csvwith open('基金.csv', 'a', encoding='utf-8-sig', newline='
') as f:f.write('基金代码,基金简称,English,日期,基金净值,基金累计净值,日增长率,基金近1周,基金近1月,基金近3月,基金近6月,基金近1年,基金近2年,基金近3年,今年来,成立来,False,False,False,False,手续费,False,False,False,False,False')
headers = {"Accept": "*/*","Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","Cache-Control": "no-cache","Connection": "keep-alive","Pragma": "no-cache","Referer": "https://fund.eastmoney.com/data/fundranking.html","Sec-Fetch-Dest": "script","Sec-Fetch-Mode": "no-cors","Sec-Fetch-Site": "same-origin","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0","sec-ch-ua": ""Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": ""Windows""
}
cookies = {"ASP.NET_SessionId": "2n3frbs0qlvk51gumxde43jz","st_si": "03571815072389","st_pvi": "42679690302429","st_sp": "2025-01-05%2020%3A21%3A57","st_inirUrl": "https%3A%2F%2Ffund.eastmoney.com%2Fdata%2F","st_sn": "1","st_psi": "20250105202156911-112200312936-7115758265","st_asi": "delete"
}
url = "https://fund.eastmoney.com/data/rankhandler.aspx"
for page in range(1,20):params = {"op": "ph","dt": "kf","ft": "all","rs": "","gs": "0","sc": "1nzf","st": "desc","sd": "2024-01-05","ed": "2025-01-05","qdii": "","tabSubtype": ",,,,,","pi": page,"pn": "50","dx": "1","v": "0.7427594655500473"}response = requests.get(url, headers=headers, cookies=cookies, params=params)text = re.findall(r'datas:[(.*?)]', response.text)[0]tuple_data = eval(text)for tup in tuple_data:with open('基金.csv', 'a', encoding='utf-8-sig', newline='
') as f:f.write(tup)f.write('
')

数据清洗模块

准备步骤:
下载pandas模块 pip install pandas

此时可以新建一个py文件 方便我们清洗数据

# 第一步导包
import pandas as pd# 读取文件
df = pd.read_csv('基金.csv')
# 获取该文件中所有的列名print(df.columns)

将我们所需要的复制下来 形成一个新的文件

import pandas as pddf = pd.read_csv('基金.csv')
# 语法df[['基金代码', '基金简称', 'English', '日期', '基金净值', '基金累计净值', '日增长率', '基金近1周',
'基金近1月', '基金近3月', '基金近6月', '基金近1年', '基金近2年', '基金近3年', '今年来', '成立来','手续费']].to_csv('基金_New.csv', index=False,encoding='utf-8-sig')print(df.columns)

现在就看着舒服多了

Explain:
如下图所示的列名中的数字0保存到csv文件中会消失 但在pycharm中可以正常显示

数据可视化模块

# 导包
# 需要下载pyecharts
import pandas as pd
from pyecharts.charts import Line
from pyecharts.options import LabelOpts
from pyecharts import options as optsdf = pd.read_csv('基金_New.csv')
# 将每一列的数据转换成列表 因为下面的表格数据需要list类型的
name = df['基金简称'].tolist()
value = df['基金净值'].tolist()
value_2 = df['基金累计净值'].tolist()
value_3 = df['基金近1周'].tolist()
# 折线图的生成
line = (Line()# 生成x y轴的值.add_xaxis(name).add_yaxis('基金净值', value, markpoint_opts=opts.MarkPointOpts(# 只显示数据中的最小值和最大值data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).add_yaxis('基金累计净值',value_2,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).add_yaxis('基金近1周',value_3,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")]))# 将数值不显示出来 这样美观些.set_series_opts(label_opts=opts.LabelOpts(is_show=False))).render('found.html')
# 最后生成html文件

相关文章:

爬虫基础之爬取某基金网站+数据分析

声明: 本案例仅供学习参考使用,任何不法的活动均与本作者无关 网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台! 本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 pip install 模块名 爬取步骤: …...

使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG

作者:来自 Elastic Hemant Malik 及 Jonathan Fritz 组织依靠自然语言查询从非结构化数据中获取见解,但要获得高质量的答案,首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程&a…...

Couchbase UI: Server

在 Couchbase UI 中的 Server(服务器)标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍: 1. 节点列表 显示集群中所有节点的列表,每个节点的详细信息包括: 节点地址&#xff1…...

Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨

摘要:Web3.0作为互联网的下一代形态,承载着去中心化、开放性和安全性的重要愿景。然而,其高门槛、用户体验差等问题阻碍了Web3.0的主流化进程。本文旨在深入探讨Web3.0面临的挑战,并提出利用开源21链动模式、AI智能名片及S2B2C商城…...

langchain基础(一)

模型又可分为语言模型(擅长文本补全,输入和输出都是字符串)和聊天模型(擅长对话,输入时消息列表,输出是一个消息)两大类。 以调用openai的聊天模型为例,先安装langchain_openai库 1…...

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说,android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要,而是多个控件的属性值之比发挥作用,例如有2个控件,各自的android:layout_weight的值设为0.5和0.5&#xff0…...

RabbitMQ 架构分析

文章目录 前言一、RabbitMQ架构分析1、Broker2、Vhost3、Producer4、Messages5、Connections6、Channel7、Exchange7、Queue8、Consumer 二、消息路由机制1、Direct Exchange2、Topic Exchange3、Fanout Exchange4、Headers Exchange5、notice5.1、备用交换机(Alter…...

Qt Enter和HoverEnter事件

介绍 做PC开发的过程中或多或少都会接触到鼠标的悬停事件,Qt中处理鼠标悬停有Enter和HoverEnter两种事件 相同点 QEvent::Enter对应QEnterEvent,描述的是鼠标进入控件坐标范围之内的行为,QEnterEvent可以抓取鼠标的位置;QEvent…...

大语言模型之prompt工程

前言 随着人工智能的快速发展,我们正慢慢进入AIGC的新时代,其中对自然语言的处理成为了智能化的关键一环,在这个大背景下,“Prompt工程”由此产生,并且正逐渐成为有力的工具... LLM (Large Language Mode…...

WPF基础 | WPF 常用控件实战:Button、TextBox 等的基础应用

WPF基础 | WPF 常用控件实战:Button、TextBox 等的基础应用 一、前言二、Button 控件基础2.1 Button 的基本定义与显示2.2 按钮样式设置2.3 按钮大小与布局 三、Button 的交互功能3.1 点击事件处理3.2 鼠标悬停与离开效果3.3 按钮禁用与启用 四、TextBox 控件基础4.…...

[笔记] 极狐GitLab实例 : 手动备份步骤总结

官方备份文档 : 备份和恢复极狐GitLab 一. 要求 为了能够进行备份和恢复,请确保您系统已安装 Rsync。 如果您安装了极狐GitLab: 如果您使用 Omnibus 软件包,则无需额外操作。如果您使用源代码安装,您需要确定是否安装了 rsync。…...

随笔十七、eth0单网卡绑定双ip的问题

在调试语音对讲过程中遇到过一个“奇怪”问题:泰山派作为一端,可以收到对方发来的语音,而对方不能收到泰山派发出的语音。 用wireshark抓包UDP发现,泰山派发送的地址是192.168.1.30,而给泰山派实际设置的静态地址是19…...

逻辑复制parallel并发参数测试

逻辑复制parallel并发参数测试 一、测试结果、测试环境描述 1.1、测试结果 cpu表中有1000万条数据,大小为1652MB,当更新的数据量多于10万条的时候有明显变化,多余30万条的时候相差2倍。 更新的数据量较多时,逻辑复制使用并发参数相比于使用…...

Cursor 帮你写一个小程序

Cursor注册地址 首先下载客户端 点击链接下载 1 打开微信开发者工具创建一个小程序项目 选择TS-基础模版 官方 2 然后使用Cursor打开小程序创建的项目 3 在CHAT聊天框输入自己的需求 比如 小程序功能描述:吃什么助手 项目名称: 吃什么小程序 功能目标…...

WordPress免费证书插件

为了在您的网站上启用HTTPS,您可以使用本插件快速获取Let’s Encrypt免费证书。 主要功能: 支持快速申请Let’s Encrypt免费证书支持通配符证书申请,每个证书最多可以绑定100个域名支持自动续期证书支持重颁发证书,证书过期或失…...

Linux:多线程[2] 线程控制

了解: Linux底层提供创建轻量级进程/进程的接口clone,通过选择是否共享资源创建。 vfork和fork都调用的clone进行实现,vfork和父进程共享地址空间-轻量级进程。 库函数pthread_create调用的也是底层的clone。 POSIX线程库 与线程有关的函数构…...

C++——list的了解和使用

目录 引言 forward_list与list 标准库中的list 一、list的常用接口 1.list的迭代器 2.list的初始化 3.list的容量操作 4.list的访问操作 5.list的修改操作 6.list的其他操作 二、list与vector的对比 结束语 引言 本篇博客要介绍的是STL中的list。 求点赞收藏评论…...

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中,小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案,用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍,为大家介绍如何创建主代理,将多个子代理挂载到主代理…...

DBeaver连接MySQL数据库

打开DBeaver,点击“新建数据库连接”选项。 点击“测试连接”,首次连接mysql会提示下载对应的JDBC驱动,点击下载即可。 填写服务器地址(这里是本地测试)、mysql的用户名(root)和密码&#xff…...

Leetcode40: 组合总和 II

题目描述: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 代码思路&#xff…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...