zoukankan      html  css  js  c++  java
  • python爬取詹姆斯职业生涯数据并生成图标展示

    python爬取詹姆斯职业生涯数据并生成图标展示

    从网页获取数据
    使用plt生成柱状图
    
    import requests
    from fake_useragent import UserAgent
    from lxml import html
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def get_data():
        url = 'http://www.stat-nba.com/player/1862.html'
        response = requests.get(url, headers={'User-Agent': UserAgent().random})
        etree = html.etree
        e = etree.HTML(response.text)
        scores = e.xpath('//table[@id="stat_box_avg"]//tr//td[24]/text()')
        backboards = e.xpath('//table[@id="stat_box_avg"]//tr//td[16]/text()')
        assists = e.xpath('//table[@id="stat_box_avg"]//tr//td[19]/text()')
        times = e.xpath('//*[@id="stat_box_avg"]/tbody/tr/td[2]/a/text()')
    
        del (scores[-1])
        del (backboards[-1])
        del (assists[-1])
    
        for i in range(0, 17):
            scores[i] = float(scores[i])
            backboards[i] = float(backboards[i])
            assists[i] = float(assists[i])
    
        scores.reverse()
        backboards.reverse()
        scores.reverse()
        assists.reverse()
        times.reverse()
        return scores, backboards, assists, times
    
    
    def create_chart(scores, backboards, assists, times):
        print(scores)
        year = 17
        total_width = 0.9
        n = 3
        width = total_width / n
        x = np.arange(year)
        x = x - (total_width - width) / 2
    
        # 用来正常显示中文标签
        plt.rcParams['font.sans-serif'] = ['SimHei', 'Times New Roman']
    
        plt.bar(x, backboards, width=width, label="篮板")
        plt.bar(x + width, assists, width=width, label="助攻")
        plt.bar(x + 2 * width, scores, width=width, label="得分")
        print(x + 2 * width)
        print(scores)
        print(type(x + 2 * width))
        print(type(scores))
        # 设置横坐标
        plt.xticks(x + width, times, rotation=50)
        # 显示图注
        plt.legend()
        # 设置标题
        plt.title('勒布朗·詹姆斯所有赛季数据对比')
    
        # 设置y轴区间
        # plt.ylim(0, 35)
    
        # 设置y轴文字
        # plt.set_ylabel("数据")
    
        # 显示图表
        plt.show()
    
    
    def main():
        scores, backboards, assists, times = get_data()
        create_chart(scores, backboards, assists, times)
    
    
    if __name__ == '__main__':
        main()
    
    
    

    效果图

    版权声明:本文为博主原创文章,转载请附上博文链接!
  • 相关阅读:
    IIS7 503错误 Service Unavailable
    android错误系列之导出数据库出错Failed to pull selection
    android学习笔记(入门篇)
    使用cmd命令删除文件夹下所有文件
    vue 动态插入组件
    js获取当前时间
    获取带参值
    以毫秒为单位的时间长度转化为时分秒时间格式的时间长度
    js如何复制一个对象?
    想在已创建的Vue工程里引入vux组件
  • 原文地址:https://www.cnblogs.com/zq98/p/15028022.html
Copyright © 2011-2022 走看看