本篇文章介绍使用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 家网贷平台数据的可视化截图。尺寸为各平台总成交额,颜色为综合利率。