工具和中间件——网络爬虫+数据分析,目标:天天基金网

目录

一、前言

二、python爬取数据

2.1 页面分析

2.2 代码结构

2.2.1 python+selenium+phantomjs

2.2.2 配置phantomjs与基金地址

2.2.3 页面跳转

2.2.4 多线程爬取

2.2.5 运行成功

三、数据分析

3.1 将数据导入到Mysql中                            

3.2 图表分析

3.2.1 天弘沪深300ETF联接A 单位净值折线图

3.2.2 天弘沪深300ETF联接A累计净值折线图

3.2.3 天弘沪深300ETF联接A 日涨跌幅柱状图

四、小结


一、前言

      上一篇文章中,我们使用爬虫爬取ZOL首页壁纸并存储下来,对于精美图片确实是这样处理。但是,如果爬取的对象是有意义的数据(金融数据、统计数据等),我们除了爬取下来,还需要对数据分析。笔者参加工作后爱好买基金,多多少少还是赚了点钱的,所以,本文中我们爬取的对象是“天天基金网”。

基金上有很多基金,这里为大家推荐一只,是笔者长期定投的,也是本文爬取和数据分析的对象——天弘沪深300ETF联接A (000961)。

附(题外话):关于基金的,天弘代表公司名,沪深300代表上海证券交易所和深圳证券交易所排名前300的股票构成,即这是一只宽指基金,ETF联接代表投资于ETF基金的基金(简称目标ETF),A表示适合长期持有。

文末给出爬虫工程和数据分析工程源码。

二、python爬取数据

2.1 页面分析

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第1张图片

我们只要定位到“http://fundf10.eastmoney.com/jjjz_000961.html” ,然后取table标签中的内容(即tbody中的内容)就好了。

但是又遇到一个新的问题,基金的历史数据不是仅仅只有一页,至少有几十页,所以我们要提取的是不同页面的数据。

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第2张图片

附:一般来说,一个爬虫对象的数据一次展现不完全时,就要多次展示,网站的处理办法有两种:

1、下一个页面的url和上一个页面的url不同,即每个页面的url是不同的,一般是是序号累加,处理方法是将所有的html页面下载至本地,从而拿到所有数据;(天天基金网显示不是这种类型)

2、下一个页面的url和上一个页面的url相同,即展示所有数据的url是一样的,这样的话网页上一般会有“下一页”或“输入框”与“确认”按钮,处理方法是将代码中触发“下一页”或“输入框”与“确认”按钮点击事件来实现翻页,从而拿到所有数据。(天天基金网是这种类型)

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第3张图片

2.2 代码结构

2.2.1 python+selenium+phantomjs

python、seleninum、phantomjs被称为爬虫三剑客,python——手,selenium——剑柄,phantomjs——剑尖

1、selenium

官方定义:selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行 (Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core 基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

安装:pycharm下面的terminal终端窗口中输入“pip install seleninum”即可

引用:from selenium import webdriver

2、phantomjs

官方定义:PhantomJS是一个基于webkit的javascript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、html5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等

安装:官方下载地址:http://phantomjs.org/download.html。官网上下载windows 64位最新版即可。

使用:webdriver.PhantomJS(executable_path=r"phantomjs在本机电脑的安装路径的绝对路径")

2.2.2 配置phantomjs与基金地址

     

2.2.3 页面跳转

                                 工具和中间件——网络爬虫+数据分析,目标:天天基金网_第4张图片

2.2.4 多线程爬取

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第5张图片

2.2.5 运行成功

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第6张图片

三、数据分析

我们这里数据量较小,所有的61个文本文件只有716KB:

                   工具和中间件——网络爬虫+数据分析,目标:天天基金网_第7张图片

相对于今天的大数据行业动辄以T为单位的数据量来说,只能算一个小实验,所有直接使用Mysql存放数据就好。

3.1 将数据导入到Mysql中                            

3.1.1 工程结构

该工程使用Jsonp对爬虫得到的txt解析,然后提取出信息,插入到数据库中,核心代码为:

                        工具和中间件——网络爬虫+数据分析,目标:天天基金网_第8张图片

3.1.2 运行成功

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第9张图片

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第10张图片

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第11张图片

3.2 图表分析

当我们拿到数据之后,就可以很轻松是生成图表,如下:

3.2.1 天弘沪深300ETF联接A 单位净值折线图

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第12张图片

从图中可以清晰的看出,该基金(天弘沪深300ETF联接A)自成立起到2019年12月17日单位净值的变化,从发行日单位净值为1.0000到最近一天(2019年12月17日)的单位净值为1.1752。

3.2.2 天弘沪深300ETF联接A累计净值折线图

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第13张图片

一般来说,基金每次分红拆分,基金的单位净值就会变为1.0000,但是累计净值不会发生变化,该基金单位净值曲线和累计净值曲线相同,则说明自成立起至今日未发生分红拆分。

3.2.3 天弘沪深300ETF联接A 日涨跌幅柱状

工具和中间件——网络爬虫+数据分析,目标:天天基金网_第14张图片

该图为该基金日涨跌幅柱状图,可以看到波动还是比较大的,可以看出中国A股的波动性大,即使是沪深300这种宽指基金也受到很大波动。 

四、小结

       本文我们知道了,爬虫对于爬取的是有意义的数据的时候,并不是爬下来了就完事了,还要对数据进行分析(当然本文的实验数据量比较小,数据分析也比较简单),这是公司级项目中的一个重要内容。

 

天天打码,天天进步!

 

爬虫工程源代码:https://download.csdn.net/download/qq_36963950/12061022

数据分析工程源代码:https://download.csdn.net/download/qq_36963950/12061025

 

 

在这里插入图片描述

你可能感兴趣的:(工具和中间件)