Python 动态网页Fetch/XHR爬虫——以获取NBA球员信息为例

动态网页抓取信息,一般利用F12开发者工具-网络-Fetch/XHR获取信息,实现难点有:

我们这次想要得到的信息如下:

[En]

The information we want to get this time is as follows:

成功获取到的csv一共506位球员,具体如下:

实现代码:

 import requests
 import pandas as pd
 ​
 def get_headers(header_raw):
    return dict(line.split(": ", 1) for line in header_raw.split("\n") if line != '')
 ​
 # 设置headers
 headers_str = '''
 accept: application/json, text/plain, */*
 accept-encoding: gzip, deflate, br
 accept-language: zh-CN,zh;q=0.9
 referer: https://china.nba.cn/playerindex/
 sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
 sec-ch-ua-mobile: ?0
 sec-ch-ua-platform: "Windows"
 sec-fetch-dest: empty
 sec-fetch-mode: cors
 sec-fetch-site: same-origin
 cookie: sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22182d0029f842fc-0d281a685dd4e08-4303066-2400692-182d0029f85406%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTgyZDAwMjlmODQyZmMtMGQyODFhNjg1ZGQ0ZTA4LTQzMDMwNjYtMjQwMDY5Mi0xODJkMDAyOWY4NTQwNiJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%22182d0029f842fc-0d281a685dd4e08-4303066-2400692-182d0029f85406%22%7D; privacyV2=true; i18next=zh_CN; locale=zh_CN
 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
 '''
 headers = get_headers(headers_str)
 # print(headers)
 ​
 # requests请求
 param = {'locale': 'zh_CN'}
 url = 'https://china.nba.cn/stats2/league/playerlist.json'
 response = requests.get(url=url, headers=headers, params=param)
 ​
 print('返回状态码:', response.status_code)
 print('编码:', response.encoding)
 ​
 # json解码成字典
 myjson = response.json()
 ​
 # 保存为pandas DataFrame
 # print(players_dicts['playerProfile'])
 # print(players_dicts['teamProfile'])
 ​
 # 遍历选手信息
 players_info = []
 for players_dicts in myjson['payload']['players']:
     players_info.append(pd.DataFrame([players_dicts['playerProfile']]))
 ​
 # 遍历队伍简介信息
 teams_info = []
 for players_dicts in myjson['payload']['players']:
     teams_info.append(pd.DataFrame([players_dicts['teamProfile']]))
 ​
 # 得到两个DataFrame
 players_pandas = pd.concat(players_info)
 teams_pandas = pd.concat(teams_info)
 ​
 # 合并得到最终DataFrame
 result = pd.concat([players_pandas, teams_pandas], axis=1)
 result.to_csv(r'C:\Users\WeiRonbbin\Desktop\NBA_Players1.csv')

Original: https://www.cnblogs.com/WeiRonbbin/p/16623355.html
Author: 汪汪碎冰冰!
Title: Python 动态网页Fetch/XHR爬虫——以获取NBA球员信息为例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/498627/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • DataFrame增加和删除行

    先说结论: dataframe增加行可以用df.append合并两个dataframe实现 dataframe删除行可以用df.drop实现 一、DataFrame增加行 已知da…

    Python 2023年8月16日
    052
  • Flask-响应

    响应字符串 Flask调用视图函数后,会将其返回值作为响应的内容。多数情况下,响应就是一个简单的字符串,作为html页面回送客户端。 如 @app.route(‘/admin’) …

    Python 2023年8月15日
    056
  • 权限类与频率类

    权限类 主要用途:用户登录了,某个接口可能只有超级管理员才能访问,普通用户不能访问 案列:出版社的所有接口,必须登录,而且是超级管理员才能访问 分析步骤 第&…

    Python 2023年10月31日
    042
  • SpringCloud-Ribbon

    SpringCloud-Ribbon 1. Ribbon概述 Spring Cloud Ribbon是一个基于HTTP和TCP的 客户端负载均衡工具,它基于 Netflix Rib…

    Python 2023年10月11日
    034
  • TensorFlow基本概念与常用函数

    TensorFlow基本概念与常用函数 文章目录 TensorFlow基本概念与常用函数 * 一:张量 – (一):张量概念 (二):TensorFlow中的数据类型 …

    Python 2023年8月28日
    060
  • Pandas reindex重置索引

    重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配。通过重置索引操作,您可以完成对现有数据的…

    Python 2023年8月6日
    051
  • pytest源码_Pytest的魂Pluggy(初探篇)

    Pluggy是啥?从官网的解释给出,Pluggy让用户能够通过为host程序安装插件来扩展或修改该程序的行为。而且它是pytest插件管理和钩子函数调用的核心,pytest本身就是…

    Python 2023年9月13日
    051
  • 【机器学习】李宏毅——Recurrent Neural Network(循环神经网络)

    假设我们当前要做一个人工智能客服系统,那该系统就需要对用户输入的话语进行辨认,例如用户输入: I want to arrive Taipei on November 2nd 那么该…

    Python 2023年10月28日
    047
  • pd.Series()函数

    Pandas会默认用0到n-1来作为series的index,也可以自己指定index(可以把index理解为dict里面的key) 1 pd.Series([list]&…

    Python 2023年8月27日
    068
  • DDL数据定义语言

    DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库、表、列等;创建、删除、修改 库,表结构。主要分为操…

    Python 2023年6月3日
    0133
  • matplotlib添加字体、字体格式自定义

    文章目录 1.向matplotlib添加字体 2.画图时自定义字体格式 * 2.0 修改全局字体 2.1 用fontproperties参数的一类方法 2.2 用prop参数的一类…

    Python 2023年8月31日
    074
  • scrapy__邓治安

    命令提示符下载需要的依赖包 python -m pip install –upgrade pip 这条是更新 pip install wheel pip install…

    Python 2023年10月2日
    057
  • Python_pygame库学习笔记(3):用相对关系定位元素,用for循环嵌套if条件语句复用元素

    大家好,我是Imanuel,这是我原创的学习笔记,用费曼学习法自己提出问题,自己研究讲给网友们听,希望可以和大家一起学习进步。 Python_pygame库学习笔记(3): 4. …

    Python 2023年9月21日
    051
  • 基于Python的GUI图形用户界面编程

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年10月11日
    045
  • Redis在windows中安装启动失败

    Redis在Windows中启动失败如下图: 可以进入安装目录中。 D:\ redis> 然后运行 rediss.exe redis.windows.conf 由于这里我更改…

    Python 2023年6月10日
    072
  • 代码会说话——pyttsx3简介

    目录 一、pyttsx3 概述 二、pyttsx3的安装 三、pyttsx3的运用 四、全套代码 一、pyttsx3 概述 代码会说话:pyttsx3是Python中的文本到语音转…

    Python 2023年10月7日
    040
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球