吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2636|回复: 35
收起左侧

[Python 原创] python爬取历年NBA球员排名

  [复制链接]
trash 发表于 2022-11-15 10:24
本帖最后由 trash 于 2022-11-15 10:26 编辑

之前发了用jupyter notebook爬取美女壁纸今天我们来爬取一些数据看看(注意:仅供学习,否则后果自负)
一,网页分析

首先通过观察发现点击不不同分类网址并没有改变所以是用来动态加载技术
所以打开f12里的network


然后通过选择不同年份提交得到不同加载文件发现信息再这里并点开


到此发现了所需要的数据可用python的json解析得到数据代码如下:
[Python] 纯文本查看 复制代码
import requests,json,time,random
import pandas as pd
myheader = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
for season in range(1996,2022):    
    k=0;all_pages = []
    while True:
        url=f'https://china.nba.cn/stats2/league/playerstats.json?&pageIndex={k}&season={season}&seasonType=2'
        r = requests.get(url,headers=myheader) #请求json
        j_data=json.loads(r.text)              #解析json
        max_index = j_data.get('payload').get('paging').get('totalPages')#提取最大页码
        max_index = int(float(max_index))                               #转换为整数
        players = j_data.get('payload').get('players')                  #提取列表
        df_por=pd.DataFrame([p.get('playerProfile')for p in players])   #球员信息表
        df_team = pd.DataFrame([p.get('teamProfile')for p in players])
        df_mean = pd.DataFrame([p.get('statAverage')for p in players])
        df_statTotal = pd.DataFrame([p.get('statTotal')for p in players])
        df_page = pd.concat([df_por,df_team,df_statTotal],axis=1)       #横向合并表格
        all_pages.append(df_page)                                       #表格存入列表
        print(k,end=',')
        k+=1
        if k > max_index:
            break
        #time.sleep(random.random()*2)
    df = pd.concat(all_pages)                                              #合并赛季表格
    df.to_excel(f'{season}.xlsx',index=False)
    print(f'-----------{season}------')

代码运行图和结果

QQ截图20221115101112.png
QQ截图20221115101546.png
QQ截图20221115101633.png
QQ截图20221115101720.png
QQ截图20221115102329.png
QQ截图20221115102212.png

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
jxp199801 + 1 + 1 热心回复!
hubohang + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| trash 发表于 2022-11-15 14:38
Heat 发表于 2022-11-15 12:34
我就看了下图片内的代码, 核心就是调用HTTP API分页查询,数据解析一下做了个归档,是这样吗?

你好,这里在分析网址时候便可以发现网址里面已经有参数了(也就是网页上的选项如东部和西部就是网址里面的&west或者&east)所以其实可以改网址网址里的参数来实现不同联盟和赛季的爬取(我们这里是爬的历年常规赛)同时对于年份和页面这种有规律的数字就可以用for循环构造实现历年爬取
Heat 发表于 2022-11-16 09:33
trash 发表于 2022-11-15 14:38
你好,这里在分析网址时候便可以发现网址里面已经有参数了(也就是网页上的选项如东部和西部就是网址里面 ...

明白, 给楼主点赞
 楼主| trash 发表于 2022-11-15 10:28
细心的朋友会发现虽然网页上有50个但爬下来的是当年的所有的球员哦
渡九丶 发表于 2022-11-15 10:40
秀儿,整的挺不错的
coller 发表于 2022-11-15 10:49
支持下看看
Gaobosky30 发表于 2022-11-15 10:50
你强任你强,老子白嫖党
ycdtbs924 发表于 2022-11-15 10:54
对球迷来说很有用啊
pinkplano 发表于 2022-11-15 11:08
球迷福利
lxin0432 发表于 2022-11-15 11:22
感谢大佬分享
13084043359 发表于 2022-11-15 11:39
感谢大佬分享
cian9999 发表于 2022-11-15 11:48
这个厉害了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表