使用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对数据进行抓取及可视化的更多相关文章

  1. [Python] 糗事百科文本数据的抓取

    [Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...

  2. [Python爬虫] 之八:Selenium +phantomjs抓取微博数据

    基本思路:在登录状态下,打开首页,利用高级搜索框输入需要查询的条件,点击搜索链接进行搜索.如果数据有多页,每页数据是20条件,读取页数 然后循环页数,对每页数据进行抓取数据. 在实践过程中发现一个问题 ...

  3. Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据--转

    数据来源:数据挖掘入门与实战  公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.co ...

  4. python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)

    python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...

  5. python实现一个栏目的分页抓取列表页抓取

    python实现一个栏目的分页抓取列表页抓取 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import Beautifu ...

  6. HTTPS数据包抓取的可行性分析

    HTTPS数据包抓取的可行性分析 相信只要是从事软件开发, 多多少少都会涉及到数据包的抓取.常见的有网页数据抓取(即网页爬虫),应用程序数据包抓取等.网页数据抓取比较简单, 在chrome下可以非常方 ...

  7. python爬虫构建代理ip池抓取数据库的示例代码

    爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...

  8. 6 wireshark 安装使用 数据包抓取

    1.wireshark安装 2.开始使用 3.界面详情 4. 数据包抓取 5.过滤数据

  9. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

随机推荐

  1. Python3实战spark大数据分析及调度✍✍✍

    Python3实战spark大数据分析及调度  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  2. jdbc加载驱动方法

    1.Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver(new com.mysql.jd ...

  3. VMware 安装android-x86系统。

    首先先安装 VMware 虚拟机,并下载 android-x86_64-8.1-r2.iso 系统. VMware安装完成后,打开VMware Workstation,单击“创建新的虚拟机”,或者在菜 ...

  4. RabbitMQ学习第一记:用java连接RabbitMQ

    1.什么是RabbitMQ MQ(Message Queue):消息队列,是服务端设计的一个可以存储大量消息的队列,并提供客户端操作队列的方法:生产队列(向队列中添加数据).消费队列(从队列中取数据) ...

  5. PHP算法之统计全为 1 的正方形子矩阵

    在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0 输出: 4 来源:力扣( ...

  6. Windows taskkill

    TASKKILL [/S system [/U username [/P [password]]]]         { [/FI filter] [/PID processid | /IM imag ...

  7. js 盒子模型与盒子偏移量

    js 盒子模型: 通过js中提供的一系列属性和方法获取页面中元素的样式信息值. 一.client系类—>只读属性不可设置 (当前元素的私有属性,和内容溢出没关系,如果给容器设置了高度,就采用设置 ...

  8. 简单的UDP服务端和客户端示例

    UDP的理论不再多说,我这里直接给出一个关于UDP的HelloWorld程序,代码明了,希望对刚入门的学生有所帮助! 当然,实际上,在这块我也刚入门! 首先写服务端代码,服务端邦定本地的IP和端口来监 ...

  9. [NOIP2019模拟赛]HC1147 时空阵

    题目描述: 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和从b到a都只需要单位1的时间. ...

  10. Educational Codeforces Round 69 D E

    Educational Codeforces Round 69 题解 题目编号 A B C D E F 完成情况 √ √ √ ★ ★ - D. Yet Another Subarray Problem ...