• 使用python和tableau对数据进行抓取及可视化


    使用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 家网贷平台数据的可视化截图。尺寸为各平台总成交额,颜色为综合利率。
  • 相关阅读:
    在web项目下注册MySQL数据库驱动失败
    Servlet 调用过程
    请求时参数到后台解码时会出现乱码问题
    Request 部分功能
    dom4j增删改查
    微信消息处理JAXP-sax解析
    微信消息处理JAXP-dom解析
    inputstream与其他格式的转换
    微信消息处理
    将Gridview导出到Excel
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586797.html
Copyright © 2020-2023  润新知