爬虫解析json存入本地数据库

from peewee import *

db = MySQLDatabase("rain", host="自己mysqlip", port=3306(端口), user="用户名", password="密码")

class BaseModel(Model):
    class Meta:
        database = db


"""
char类型, 要设置最大长度
对于无法确定最大长度的字段,可以设置为Text
设计表的时候 采集到的数据要尽量先做格式化处理
default和null=True
"""


class bart(BaseModel):#球队

    city = CharField(max_length=35, verbose_name="城市")
    bar = CharField(max_length=35, verbose_name="球队")
    win = CharField(max_length=6, verbose_name="胜利数")




class playert(BaseModel): #球员信息
    name= CharField(max_length=20, verbose_name="名称")
    points = FloatField(default=0, verbose_name='得分')
    assists =FloatField(default=0, verbose_name="助攻")
    blocks=FloatField(default=0, verbose_name="助攻")

if __name__ == "__main__":
    db.create_tables([bart,playert])

 绑定数据库信息运行

 
 

 查看数据库是否有表:

网页json格式建议下载一个json插件便与分析。

爬虫代码

import requests

from xlzmodeles import bart, playert

url = 'https://china.nba.cn/stats2/season/conferencestanding.json?locale=zh_CN' #球队数据json
url2='https://china.nba.cn/stats2/league/playerstats.json?conference=All&country=All&individual=All&locale=zh_CN&pageIndex=0&position=All&qualified=false&season=2021&seasonType=4&split=All+Team&statType=points&team=All&total=perGame'

res = requests.get(url)
res.encoding = 'utf-8'
data = res.json()

res2 = requests.get(url2)
res2.encoding='utf-8'
data2 = res2.json()


temp = data['payload']['standingGroups']
for item in temp:
    teams = item['teams']
    for team in teams:
        # print(team['profile']['city']) ## 城市名称
        city = team['profile']['city']
        # print(team['profile']['name']) # 球队名称
        bar = team['profile']['name']
        # print(team['standings']['wins']) #球队胜利
        win = team['standings']['wins']

        Bar = bart()
        Bar.city = city
        Bar.bar = bar
        Bar.win = win
        Bar.save()



print("第一张表导入输出成功")
# print(data2['payload']['players'][0]['playerProfile']['displayName'])
#球员
# print(data2['payload']['players'])
temp2 =data2['payload']['players']
for player1 in temp2:
   # print(player['playerProfile']['displayName']) # 名字
   name =player1['playerProfile']['displayName']
   # print(player['statAverage']['pointsPg'])#场均得分
   points = player1['statAverage']['pointsPg']
   # print(player['statAverage']['assistsPg']) #助攻
   assists= player1['statAverage']['assistsPg']
   # print(player['statAverage']['blocksPg']) # 盖帽
   blocks =player1['statAverage']['blocksPg']

   Player= playert()
   Player.name = name
   Player.points = points
   Player.assists= assists
   Player.blocks = blocks
   Player.save()


print("全成功")

 查看数据库

 

 下班啦

猜你喜欢

转载自blog.csdn.net/qq_46654604/article/details/127043426