python爬虫抓包爬取NBA中文网近20年球员数据

2023-05-16

#爬取NBA中文网近20年的球员数据
#因为NBA中文网球员数据是通过json异步加载的,所以需要抓包实现
import time
import requests
import json
import csv

#获取json文件里面的内容并提取信息
def get_json_content(url):
        # r_content=requests.get(url).content.decode('utf-8')
        r_content = requests.get(url).text

        #将json文件里的内容转化为json格式,结构化方便提取数据
        r_json=json.loads(r_content)
        #球员数据所在赛季
        season=r_json.get('payload')['season']['statsSeasonYearDisplay']

        for i in range(0,50):
            #用一个字典保存球员数据所在的赛季
            data = {}
            data['赛季'] =season
            player=r_json.get('payload')['players'][i]
            data['球员姓名']=player['playerProfile']['displayName']
            data['国家']=player['playerProfile']['country']
            data['球队']=player['teamProfile']['displayAbbr']
            data['身高']=player['playerProfile']['height']
            data['体重']=player['playerProfile']['weight']
            data['位置']=player['playerProfile']['position']
            data['上场时间']=player['statAverage']['minsPg']
            data['场均得分']=player['statAverage']['pointsPg']
            data['篮板']=player['statAverage']['rebsPg']
            data['助攻']=player['statAverage']['assistsPg']
            data['盖帽']=player['statAverage']['blocksPg']
            data['防守'] = player['statAverage']['defRebsPg']
            data['效率']=player['statAverage']['efficiency']
            data['命中率']=player['statAverage']['fgpct']

            print('第'+str(i+1)+'个球员数据信息已经爬取完成')
            print(data)
            #引用全局变量文件路径
            global path
            with open(path, 'a') as f:
                #得到一个CSV写入对象
                writer = csv.writer(f, dialect=my_dialect)
                #向CSV文件中写入一行数据
                writer.writerow((data['赛季'],data['球员姓名'],data['国家'],data['球队'],data['身高'],data['体重'],data['位置'],data['上场时间'],data['场均得分'],data['篮板'],data['助攻'],data['盖帽'],data['防守'],data['效率'],data['命中率']))






if __name__=='__main__':
    #数据保存路径
    path='E://NBA_data.csv'
    #自定义一个CSV文件内容分隔形式
    class my_dialect(csv.Dialect):
        lineterminator = '\n'
        delimiter = ','
        quotechar = '"'
        quoting = csv.QUOTE_MINIMAL


    with open(path, 'w') as f:
        writer = csv.writer(f, dialect=my_dialect)
        writer.writerow(('赛季','球员姓名', '国家', '球队', '身高', '体重', '位置', '上场时间',
                         '场均得分', '篮板', '助攻', '盖帽', '防守', '效率', '命中率'))

    # 球员数据的json包链接
    url1 = 'http://china.nba.com/static/data/league/playerstats_All_All_All_0_All_false_'
    url2 = '_4_All_Team_points_All_perGame.json'
    for i in range(1996,2017):
        if (i!=2004):
            i=str(i)
            url=url1+i+url2
            get_json_content(url)
            time.sleep(3)



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬虫抓包爬取NBA中文网近20年球员数据 的相关文章

随机推荐

  • 2016年小结 2017年展望

    转载请标明出处 xff1a http blog csdn net junzaivip article details 54231935 xff0c 本文出自 junzaivip博客 每个人的世界里有的不止是光鲜 xff0c 其实还有更多别人
  • 如何将本地已有的项目加入git版本管理

    本文地址 xff1a https blog csdn net junzaivip article details 82626584 如果自己已经新建的一个项目 xff0c 暂时没有加入项目管理 xff0c 且名称不变 xff0c 如何加入
  • 基于github搭建自己的个人博客

    今天一时兴起 xff0c 看见别人使用的github io搭建了属于自己的个人博客 xff0c 我也使用github搭建一个自己的博客系统 xff1b 步骤一 xff1a 创建一个自己的github账号 xff1b xff08 略 xff0
  • ES6基本用法

    ES6基本用法 字符串的基本用法 let junzai 61 34 史慧君 34 let blog 61 34 淘宝多的是 xff0c 都是正版 xff0c 放心买 学习字符串 34 let blog 61 96 淘宝多的是 xff0c 都
  • Active MQ C++实现通讯记录

    Active MQ C 43 43 实现通讯 背景知识 xff1a ActiveMQ是一个易于使用的消息中间件 消息中间件 我们简单的介绍一下消息中间件 xff0c 对它有一个基本认识就好 xff0c 消息中间件 xff08 MOM xff
  • Node升级到最新版本

    检查目前的版本 xff1a localhost shihuijun node v v8 9 3 清除node js的cache 不确定有没有必要 localhost shihuijun sudo npm cache clean f Pass
  • Android Activity 重载 onConfigurationCangerd之屏幕方向改变

    一 onConfigurationChanged 触发时机 onConfigurationChanged 事件不只是屏幕方向改变才触发 xff0c 其他一些系统设置改变也可以触发 xff0c 例如 xff1a 打开软件盘 屏幕旋转 捕获事件
  • Android原生控件【TimePickerDialog】简单的使用

    xff08 1 xff09 首先在布局文件中定义一个Button以及对应的id xff08 2 xff09 当点击该按钮时 xff0c 代码如下 xff1a Calendar calendar 61 Calendar getInstance
  • 2019-08-10 homebrew更新更新慢的问题

    Homebrew 镜像使用帮助 直接在 路径下执行以下命令 替换现有上游 git C 34 brew repo 34 remote set url origin https mirrors tuna tsinghua edu cn git
  • contos安装ElasticSearch解决 bash: shasum: 未找到命令...

    centos需要运行一下 xff1a yum install perl Digest SHA
  • yum 无法使用的解决

    在网上看到的解决方法 xff0c 故保存于此 问题 xff1a Loaded plugins fastestmirror Determining fastest mirrors YumRepo Error All mirror URLs a
  • 报错-crontab -e 定时任务执行失败排查

    使用 crontab e 定时启动 jar 包服务失败 xff0c 排查过程如下 xff1a 1 查看 crontab 服务 span class token function crontab span l 陈列出了待执行任务列表 xff0
  • 生产者消费者问题

    目录 生产者消费者模型概述 生产者消费者模型的优点 1 解耦 2 并发性 3 忙闲不均 Linux系统下模拟实现 思路 代码实现 运行结果 生产者消费者模型概述 生产者消费者问题也称为有限缓冲问题 大概描述就是 xff1a 两个或更多的线程
  • Android指纹验证(BiometricPrompt)

    1 先导依赖 implementation span class token string 34 androidx biometric biometric 1 1 0 34 span 2 布局里写一个按钮方法 span class toke
  • 给定一个链表,判断链表中是否有环

    给定一个链表 xff0c 判断链表中是否有环 如果链表中有某个节点 xff0c 可以通过连续跟踪 next 指针再次到达 xff0c 则链表中存在环 为了表示给定链表中的环 xff0c 我们使用整数 pos 来表示链表尾连接到链表中的位置
  • qemu+kvm安装银河麒麟V10SP1 arm64 虚拟机

    qemu 43 kvm安装银河麒麟V10SP1 arm64 虚拟机 安装 qemu 工具准备下列文件创建虚拟硬盘执行启动命令通过VNC访问虚拟机安装 tigervnc连接 VNC 安装 qemu 工具 span class token fu
  • eclipse java底部输入框不见解决

    那是eclipse种的Console控制台 xff0c 重新显示方式有以下几种 xff1a 1 方法一 xff1a 快捷键 xff1a ALT 43 SHIFT 43 Q 2 方法二 xff1a 点击工具栏上的 window 输入reset
  • 人脸识别系列一 | 特征脸法

    前言 从这里开始 xff0c 我会不定期的更新一些人脸识别的有趣算法和小demo算法 xff0c 源码也会开放出来 xff0c 自己在学习的过程中希望也能帮助到公众号中对这方面感兴趣的小伙伴 xff0c 无论是从源码角度 xff0c 还是从
  • HDU 5656 CA Loves GCD dp,常数优化

    题目链接 xff1a http acm hdu edu cn showproblem php pid 61 5656 题意 xff1a 解法 xff1a span class hljs comment HDU 5656 span span
  • python爬虫抓包爬取NBA中文网近20年球员数据

    爬取NBA中文网近20年的球员数据 因为NBA中文网球员数据是通过json异步加载的 xff0c 所以需要抓包实现 import time import requests import json import csv 获取json文件里面的