黑科技!当会爬虫的Python遇上会画图的FineBI……
我们平时在用Python爬取网页上的数据时,对爬取到到的数据做数据分析展现有很多种方式,比如可以通过echart图表接口、python提供的第三方库,甚至还可以用matlab工具来进行数据统计和图表可视化展现。
可无论是以上哪一种方式,都需要通过代码来调用Python爬好的数据来进行画图,图表样式属性设置等方面还是比较繁琐的。
同样的问题,有一次小编领导要求我做一份有关于南京房价的数据汇报,需要做到报表里面。数据是没有的,自然而然想到用Python爬,爬好后直接做数据图表粘贴到报表中。但后来发现方法太土,汇报时不好做动态的数据展现(影响小编炫技装逼)。于是乎就想办法,将爬取到的数据导入到报表或者BI系统里面,利用BI本身的一些分析功能,联动着其他数据做展现。于是就有了本篇“Python爬数据,FineBI画图”的文章。
关于FineBI
这是一个可视化的自助式BI工具,整个操作就是导数据/连数据库——处理数据(可视化ETL)选择图表——拖数据字段——可视化展现&美化,操作简单上手快。小编只是用了其可视化的一隅功能,多数情况下,这个工具都是拿来做可视化报表,对接企业大数据平台,做企业数据运营分析用。
原理介绍
废话不多说,直接贴出操作。
因为想看看南京房价数据,但是网站上的很多数据都是以HTM5的形式进行呈现的,所以考虑通过Python来进行网页数据抓取和入库,数据分析方面通过FineBI工具直接连接数据库,分析和可视化呈现。
整体的思路:
数据层方面先通过Python抓取到WEB端的网页数据,之后对爬取到数据进行解析再而存储到MYSQL数据入库;
最后应用层的数据处理、数据计算统计、图表可视化呈现等工作全都交由FineBI工具来做。
操作步骤
1.引入相关python库包
首先新建python工程,引入本次爬取网页数据和写入MySQL数据库所需要的requests、pymysql、bs4这三个包:
2.获取网页数据
然后如下图所示,通过编写Python代码获取到某一个房产网页的南京售房平台的网页信息:
3.HTML标签解析
接着再对DIV样式下的HTML数据包进行逐一解析,获取到想要的房源名称、地址、小区、户型、面积、总价、单价、区域等数据:
其中对应网页的标签样式可以通过浏览器的F12开发选项进行快速获取,如下图所示的定位房源信息截图,我们只需要右键浏览器在所需要获取标签样式名称的地方点击检查元素即可(房源名称的标签即位house-title的title元素)。
4.MySQL数据回写
解析好数据之后,再将解析好的数据写入到MySQL数据库中:
循环遍历该平台在南京最近七天的网页售房信息数据,页面17页,共计377条数据:
5.安装FineBI&&验证数据入库
通过FineBI官网下载并按照引导安装好软件:
直接通过FineBI提供的数据配置端的功能,添加SQL数据集(或者直接添加表也行),查看和验证刚刚爬取并且入库的数据是否已经真正成功入库到MySQL中了。
如下图所示,Python果然不辱使命,我要的该平台的七天南京的房价售房数据都已经成功写入到了我的MySQL数据库中了。
6.FineBI可视化制作&成果展示
然后思考需要分析展现哪些内容,比如“南京各小区房价分布”、“房型价格分析”、“各区域房价分析”.....通过FineBI制作图表展现。
下面这个动图展示了一个图表的制作,其他都类似的,可参考。不懂可参见FineBI官网的帮助文档。
花了十分钟,就将我想要看的南京售房信息(房源面积均价、套房总均价、小区房价四象限分布图、区域房价分析、房型价格分析)以可视化的形式呈现出来了。
最后就是本次成果展示啦,也晒出来跟大家分享下,如下所示:
1.目前南京房源均价为3.78万每平方米,总均价为401.38万,总体上还是比较高的。
2.建邺区房价最高,果然房价还是紧跟国家政策啊,建邺目前城区开发建设政府的扶持力度在南京都是走在前面的。鼓楼、玄武、秦淮分别排在二、三、四的位置,雨花台和江宁房价相对较低,综合市区位置来看,还是秦淮区性价比最高啊 。