使用python和tableau对数据进行抓取及可视化
本篇文章介绍使用python抓取贷款及理财平台的数据,并将数据拼接和汇总。最终通过tableau进行可视化。与之前的python爬虫文章
不同之处在于之前是一次性抓取生产数据表,本次的数据需要每天重复抓取及存储,并汇总在一起进行分析和可视化。

开始前的准备工作
开始之前先导入所需使用的库文件,各个库文件在整个抓取和拼表过程中负责不同的部分。Requests负责页面抓取,re负责从抓取下
来的页面中提取有用的信息,pandas负责拼接并生成数据表以及最终的数据表导出。
#导入requests库(请求和页面抓取)
import requests
#导入正则库(从页面代码中提取信息)
import re
#导入科学计算库(拼表及各种分析汇总)
import pandas as pd
设置一个头文件信息,方便后面的抓取。这个头文件有两个作用,第一防止抓取时被封,第二方便后面对页面源文件的转码。
#设置请求中头文件的信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1)
AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64
Safari/537.11',
'Accept':'text/html;q=0.9,**;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Connection':'close',
'Referer':'https://www.bluewhale.cc/'
}
r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers)
status=r.status_code
if status == 200:
print('页面抓取状态正常。')
else:
os._exit(0)
html=r.content
html=str(html, encoding = "GBK")
print('编码转换完成!')
title=re.findall(r'"return false".*?title="(.*?)"',html)
total=re.findall(r'"total">(.*?)万<',html)
rate=re.findall(r'"rate">(.*?)<',html)
pnum=re.findall(r'"pnum">(.*?)人<',html)
cycle=re.findall(r'"cycle">(.*?)月<',html)
p1num=re.findall(r'"p1num">(.*?)人<',html)
fuload=re.findall(r'"fuload">(.*?)分钟<',html)
alltotal=re.findall(r'"alltotal">(.*?)万<',html)
capital=re.findall(r'"capital">(.*?)万<',html)
date=time.strftime('%Y-%m-%d',time.localtime(time.time()))
print('数据提取完成!')
columns =
['采集日期','平台名称','成交额(万)','综合利率','投资人(人)','借款周期(月)','借款人(人)','满标速度(分
钟)','累计贷款余额(万)','净资金流入(万)']
table=pd.DataFrame({'采集日期':date,
'平台名称':title,
'成交额(万)':total,
'综合利率':rate,
'投资人(人)':pnum,
'借款周期(月)':cycle,
'借款人(人)':p1num,
'满标速度(分钟)':fuload,
'累计贷款余额(万)':alltotal,
'净资金流入(万)':capital},
columns=columns)
print('数据表创建完成!')
table.to_csv('C:\\Users\\cliffwang\\Desktop\\wdty' date
'.csv',index=False)
print(date '日数据导出完毕!')
table.to_csv('wdty.csv',index=False,mode='a')
print('累计数据追加导出完毕!')
end = time.clock()
print ("执行时间: %f s" % (end-start))
自定义函数写好后,每次只需要执行loan_data()就可以完成之前的30 步骤的工作了。下面是代码和输出的状态信息以及代码执行时
间信息。
loan_data()
页面抓取状态正常。
编码转换完成!
数据提取完成!
数据表创建完成!
2017-04-19日数据导出完毕!
累计数据追加导出完毕!
执行时间: 0.933262 s
使用tableau进行可视化
导出的数据虽然为csv格式,但使用excel进行可视化并不理想,主要问题在于excel对图表行列数的限制(每张图最多只能容纳255个数
量列)。因此,我们将数据表导入到tableau中进行可视化。下面是对600 家网贷平台数据的可视化截图。尺寸为各平台总成交额,颜色为综合利率。
使用python和tableau对数据进行抓取及可视化的更多相关文章
- [Python] 糗事百科文本数据的抓取
[Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...
- [Python爬虫] 之八:Selenium +phantomjs抓取微博数据
基本思路:在登录状态下,打开首页,利用高级搜索框输入需要查询的条件,点击搜索链接进行搜索.如果数据有多页,每页数据是20条件,读取页数 然后循环页数,对每页数据进行抓取数据. 在实践过程中发现一个问题 ...
- Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据--转
数据来源:数据挖掘入门与实战 公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.co ...
- python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)
python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...
- python实现一个栏目的分页抓取列表页抓取
python实现一个栏目的分页抓取列表页抓取 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import Beautifu ...
- HTTPS数据包抓取的可行性分析
HTTPS数据包抓取的可行性分析 相信只要是从事软件开发, 多多少少都会涉及到数据包的抓取.常见的有网页数据抓取(即网页爬虫),应用程序数据包抓取等.网页数据抓取比较简单, 在chrome下可以非常方 ...
- python爬虫构建代理ip池抓取数据库的示例代码
爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...
- 6 wireshark 安装使用 数据包抓取
1.wireshark安装 2.开始使用 3.界面详情 4. 数据包抓取 5.过滤数据
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
随机推荐
- Codeforces Round #526 C - The Fair Nut and String /// 组合递推
题目大意: 给定原字符序列 找出其中所有子序列满足 1.序列内字符都为a 2.若有两个以上的字符 则相邻两个字符在原序列中两者之间存在字符b 的数量 将整个字符序列用b分开 此时再得到每个b之间a的数 ...
- 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架
目录 分为两个部分,笔者看到的知识图谱在商业领域的应用,外加看到的一些算法框架与研究机构. 文章目录 @ 一.知识图谱商业应用 01 唯品金融大数据 02 PlantData知识图谱数据智能平台 03 ...
- element-ui表格合计不显示&被遮挡问题
step1:修改全局样式 .el-table{ overflow:visible !important; } .el-card__body { padding: 20px 20px 50px 20px ...
- Java中哪个JSON库的解析速度是最快的?
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...
- redis笔记_源码_跳表skiplist
参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/dat ...
- mysql 的特殊函数
1. FORMAT() 函数 函数用于对字段的显示进行格式化 语法: SELECT FORMAT(column_name,format) FROM table_name column_name 必需 ...
- hadoop快照管理
快照相当于对目录做备份,并不会复制所有文件,而是记录文件的变化命令用法 ()hdfs dfsadmin -allowSnapshot 路径 (开启指定目录的快照功能) ()hdfs dfsadmin ...
- tornado接收ajax的post请求报错WARNING:tornado.access:405 OPTIONS /add
后端报错信息 WARNING:tornado.access:405 OPTIONS /add (::1) 1.00m 前端报错信息 2xhr.js?ec6c:172 OPTIONS http://lo ...
- (转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置
转:http://blog.csdn.net/zhandoushi1982/article/details/8560233 获取android文件系统的信息,需要Environment类和StatFs ...
- JS while 循环
while循环:只要条件成立,就重复不断的执行循环体代码 while(条件判断) { 如果条件为true,则执行循环体代码 } while循环结构说明: 在循环开始前,必须要对变量初始化(声明变量 ...