当前位置:   article > 正文

网络爬虫+数据可视化

网络爬虫+数据可视化

(1)网页分析

打开虎扑体育网页,对网页进行分析,使用xpath定位相关元素,提取数据

 (2)数据爬取

导入相关的库:“import  requests”,“import csv”,利用requests的get()方法爬取数据,并用csv格式保存数据。

编辑爬虫文件:使用xpath的方法对网页元素进行定位。

运行代码并保存数据。

参考代码如下:

  1. import csv
  2. f = open('hpty.csv', mode='a', encoding='utf8', newline='')
  3. csv_write = csv.DictWriter(f, fieldnames=['排名', '球队', '球员', '场均得分', '命中率', '三分命中率', '罚球命中率'])
  4. csv_write.writeheader()
  5. url = 'https://nba.hupu.com/stats/players'
  6. head = {
  7. 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
  8. }
  9. nb = requests.get(url, headers=head).text
  10. from lxml import etree
  11. sb = etree.HTML(nb)
  12. whh = sb.xpath('//tbody/tr[not(@class)]')
  13. for i in whh:
  14. pm = str(i.xpath('./td[1]/text()')).replace("['", "").replace("']", "") # 排名
  15. team = str(i.xpath('./td[3]/a/text()')).replace("['", "").replace("']", "") # 球队
  16. name = str(i.xpath('./td[2]/a/text()')).replace("['", "").replace("']", "") # 球员
  17. score = str(i.xpath('./td[4]/text()')).replace("['", "").replace("']", "") # 得分
  18. mzl = str(i.xpath('./td[6]/text()')).replace("['", "").replace("']", "") # 命中率
  19. sfmzl = str(i.xpath('./td[8]/text()')).replace("['", "").replace("']", "") # 三分命中率
  20. fqmzl = str(i.xpath('./td[10]/text()')).replace("['", "").replace("']", "") # 罚球命中率
  21. print(pm, name, team, score, mzl, sfmzl, fqmzl)
  22. data_dict = {'排名': pm, '球队': team, '球员': name, '场均得分': score, '命中率': mzl, '三分命中率': sfmzl, '罚球命中率': fqmzl}
  23. csv_write.writerow(data_dict)
  24. f.close()

得到的数据如下:

 (3)Excel数据可视化图表:

打开“hpty”数据表,选择“F1:G:11单元格区域”,然后单击“插入”选项卡中的“查看所以图表”按钮,弹出“插入图表”对话框,在“所有图表”选项卡中的选择“柱形图”中的任意一种柱形图类型,如右图所示。

 (4)Tableau可视化图表

打开Tableau工具,在开始界面选择“连接到文件”,在对话框中将“hpty.csv”导入Tableau;单击“Tableau-工作簿1”界面下方的“工作表1选项”,进入工作表1的界面中,将度量区域中的“球员”字段拖进到列功能区,把度量值区域的“场均得分”拉进到行的功能区,就可以得到垂直的柱形图,如右图所示。

(5) pyecharts可视化图表:

代码:

  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. from pyecharts.charts import Bar
  5. from pyecharts import options as opts
  6. plt.rcParams['font.sans-serif'] = ['SimHei']
  7. plt.rcParams['axes.unicode_minus'] = False
  8. df = pd.read_csv(r'D:\努力学python\文章\hpty.csv')
  9. df2 = df['场均得分'][:10]
  10. df1 = df['球员'][:10]
  11. a = (
  12. Bar()
  13. .add_xaxis(list(df1.values))
  14. .add_yaxis('球员场均得分', df2.values.tolist())
  15. .set_global_opts(
  16. title_opts=opts.TitleOpts(title='球员场均得分情况'),
  17. datazoom_opts=opts.DataZoomOpts()
  18. )
  19. )
  20. a.render('pyecharts.html')

 (6)Pandas数据可视化图表

Pandas使用一维的数据结构Series和二维的数据结构DataFrame来表示数据,Pandas可以存储混合的数据结构。

  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. plt.rcParams['font.sans-serif'] = ['SimHei']
  5. plt.rcParams['axes.unicode_minus'] = False
  6. df = pd.read_csv(r'D:\努力学python\文章\hpty.csv')
  7. data = pd.DataFrame(list(df['场均得分'][:10]),
  8. index=df['球员'][:10])
  9. data.plot.bar(color='b')
  10. plt.show()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/109069?site
推荐阅读
相关标签
  

闽ICP备14008679号