如何使用Python爬取基金数据,并可视化显示
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
以下文章来源于Will的大食堂,作者打饭大叔
前言
美国疫情越来越严峻,大选也进入了最后阶段,受之影响美股指数也在在下行中。最近的A股也在跟随美股没有什么起色,一直在动荡整理之中。玩股票基金的同学们,最近大家的仓位控制的怎么样?为了更好的科学分析基金,今天将和大家一起学习如何使用Python爬取基金数据。
下面我们将一起学习爬取基金数据,在这之前我们先做一些准备工作,配置好我们的环境。这里需要用到几个Python库需要安装:
- requests:它是一个HTTP 库,可方便的进行web访问;
pip install requests
- PyExecJs:它是一个js的执行库,后面我们将会了解到为什么需要这个库;
pip install PyExecJs
- matplotlib和numpy:这两个库用于图形化数据分析,大家可以根据《数字信号处理没有Matlab?用Python一样很爽》进行安装;
- 其他:还需要其他库可根据自己需求进行安装。
根据上面的要求环境配置完成后,就可以进行数据爬取了。
天天基金网是国内知名的基金理财网站,日活用户比较高,有较为专业全面的基金数据,数据更新也较为及时。我们今天就使用Python爬取天天基金网上的数据。
# 天天基金网地址:
https://fund.eastmoney.com
我们进入天天基金网,选取一款基金,我这里就选择银河沪深300价值指数(519671)作为例子。
那么问题来了,要爬取基金数据我们要找到数据在哪儿?
在我们选择的银河沪深300价值指数(519671)基金页面里,按F12打开调试窗口。
在调试窗口中选择Network选项,然后再F5重新载入页面,左侧Name栏将会有各种元素列出来,我们找到519671.js?v=20201026224444并选中,我们在右侧将会看到url地址,如下图。这个地址就是我们获取基金数据的接口。其中,519671是基金代码,20201026224444是当前时间。大家可以按照这个格式根据需要对这两个修改即可。
那么,我们需要爬取的数据是什么样的呢?可以选择Preview选项,如下图,我们就可以看到关于基金的详细数据。因为这里的数据是js格式的,因此我们就需要PyExecJs库解析这部分代码。
以上,我们知道了如何获取基金数据的地址和如何解析基金数据,下面我们就开始使用Python实践一下吧。
import requests
import execjs
import numpy as np
from matplotlib import pyplot as plt
url = "http://fund.eastmoney.com/pingzhongdata/519671.js?v=20201026224444"
content = requests.get(url)
jsContent = execjs.compile(content.text)
name = jsContent.eval('fS_name')
code = jsContent.eval('fS_code')
#单位净值走势数据
netWorthTrendData = jsContent.eval('Data_netWorthTrend')
#累计净值走势数据
ACWorthTrendData = jsContent.eval('Data_ACWorthTrend')
netWorthTrend = [v["y"] for v in netWorthTrendData]
ACWorthTrend = [v[1] for v in ACWorthTrendData]
plt.figure()
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#单位净值趋势图
plt.subplot(2,1,1)
plt.title(name + " ( " + code + " ) " + "单位净值")
plt.plot(netWorthTrend)
#累计净值趋势图
plt.subplot(2,1,2)
plt.title(name + " ( " + code + " ) " + "累计净值")
plt.plot(ACWorthTrend)
plt.show()
下图就是我们利用爬取的数据画出的单位净值趋势图和累计净值趋势图。
现在我们理解了爬虫了原理,接口中也提供了大量的数据,后面就需要大家根据自己的需求发挥自己的想象,去实现更多丰富的功能,赶快动手试下吧!
特别提醒:投资有风险,入市需谨慎,本文不推荐任何基金或股票,文中所用基金仅供大家学习使用。
如何使用Python爬取基金数据,并可视化显示的更多相关文章
- 毕设之Python爬取天气数据及可视化分析
写在前面的一些P话:(https://jq.qq.com/?_wv=1027&k=RFkfeU8j) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向. ...
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
- Python爬取房产数据,在地图上展现!
小伙伴,我又来了,这次我们写的是用python爬虫爬取乌鲁木齐的房产数据并展示在地图上,地图工具我用的是 BDP个人版-免费在线数据分析软件,数据可视化软件 ,这个可以导入csv或者excel数据. ...
- python爬取网站数据保存使用的方法
这篇文章主要介绍了使用Python从网上爬取特定属性数据保存的方法,其中解决了编码问题和如何使用正则匹配数据的方法,详情看下文 编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这 ...
- python爬取拉勾网数据并进行数据可视化
爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- python爬取github数据
爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...
- 用python爬取微博数据并生成词云
很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...
- 使用 Python 爬取网页数据
1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...
随机推荐
- python中闭包详解
谈谈自己的理解:python中闭包,闭包的实质 闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个 ...
- NoActionBar主题下如何添加OptionsMenu
菜单无法显示 为了不显示标题栏,所以主题使用了 NoActionBar,这也直接导致选项菜单无处显示 解决方案 添加一个ToolBar,自定义标题栏 <androidx.appcompat.wi ...
- getchar()与putchar()
getchar() 用于读取用户从键盘输入的单个字符,它有一个整型的返回值,当发生读取错误的时候,返回整型值-1,当读取正确的时候,它会返回用户从键盘输的第一个字符的ASCII码, 当程序调用getc ...
- Python正则表达式 re.sub()函数:标志位flags与参数个数问题
这两天在写爬虫程序,涉及英文文本处理,需要规范化英文标点符号的写法.正常情况下,英文句号「.」后面需要保证有且只有一个空格,但也有例外情况,比如「i.e.」.「e.g.」.「P.S.」这种.由于无法预 ...
- Python实现的数据结构与算法之双端队列详解
一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...
- C++(VS2015)模板显式特化之template语法深入理解
首先说下遇到的情况: 这里在vc++6.0上建立了一个自定义模板类,再去覆盖这个类,分别使用部分覆盖,整体覆盖 但在vs2015上去整体覆盖类会报错. 错误如下: 错误原因:个人感觉是新版本的vs更接 ...
- P4568 [JLOI2011]飞行路线 / P2939 [USACO09FEB]Revamping Trails G
题目描述 Link Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在 \(n\) 个城市设有业务,设这些城市分别标记为 \(0\) 到 \(n-1\),一共 ...
- JavaScript打印给定区间年份的闰年
要求: 用户输入需要判断的年份区间,开始年份和结束年份,输出该区间内所有的闰年. 代码实现: function isRunYear(year) { // 是闰年返回true,否则返回false var ...
- Docker笔记4:在 CentOS 上安装 Docker
Docker 是一个开源的应用容器引擎,主要有两个分支,一个是社区免费版(Docker CE),一个是企业版(Docker EE). 第1步:系统环境要求 Docker 支持的 CentOS 版本: ...
- devops工具链概述
1. devops工具链概述 1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述