纸上得来终觉浅, 绝知此事要躬行。
#夏天切记贪凉,光膀子对着空调吹,搞了个肩周炎,耽误事
前一篇几篇都是关于数据爬取的文章。有兴趣的可以去看看
男篮世锦赛开始了,看着中国队的苦苦挣扎为了奥运会入场券,哎,没法子呀。好在我有了这篇主题的思路了,谢谢啊,
来到nba中国官网,首先想到直接用get请求主页网址,发现页面都是ajax动态请求的,所以开始抓包吧,
在这个playerlist.json文件中,包含了所有球员的很多信息。包括[‘code’,’‘playerId’, ‘displayName’, ‘country’, ‘draftYear’, ‘experience’, ‘position’, ‘weight’, ‘schoolType’, ‘teamName’, ‘city’],这些是球员的基本信息,这里切记要获取’code‘’字段,后面获取球员关于比赛数据的信息的时候的url拼接需要。
一开始我是把这些数据存放在mysql数据库里,后来又存为了csv文件
下一步开始获取球员的具体的信息,再次抓包,
进入球员具体数据页面,抓包发现数据在stats_steven_adams.json文件中,在查看多个球员详细数据页面发现,请求url,最后都是在https://china.nba.com/static/data/player/stats_拼接了该球员的名字,后头看前面获取到的code字段,就是我们需要拼接的部分,例如,https://china.nba.com/static/data/player/stats_steven_adams.json
###具体的可以看代码
"""
@author: cht
@time: 2019/9/4 19:23
"""
# -*- coding: utf-8 -*-
import requests
import json
import pymysql
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#解决matplotlib画图中文显示乱码的情况
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
class NBA(object):
def __init__(self):
self.db = pymysql.connect("localhost", "root", "cht555", "nba", charset="utf8")
self.cursor = self.db.cursor()
def get_json(self, url):
try:
res = requests.get(url)
if res.status_code == 200:
return json.loads(res.text)
return None
except Exception as e:
print(e)
def get_data(self, url):
try:
req = requests.get(url)
if req.status_code == 200 or req.status_code == 304:
return json.loads(req.text)
return None
except Exception as t:
print(t)
def parse_jsonData(self, jsonfile):
# print(jsonfile)
playersinfos = jsonfile['payload']['players']
infoList = [
[