基于python中requests库抓取nba比赛实时比分

  1. 首先总结下json用法,参考资料为:

https://www.cnblogs.com/xiaomingzaixian/p/7286793.html

 

  1. json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
    (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
    (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

 

 

下面开始进入正题,数据源来自腾讯nba

  1. 进入该网址 http://nba.stats.qq.com/schedule/

http://nba.stats.qq.com/schedule/

鼠标右击->检查元素(或直接按F12),选择network->js,如下所示

 

2.在Name下面查找到比分数据信息,点击Response查找后台数据

基于python中requests库抓取nba比赛实时比分

3然后在其Headers中获取其请求url,复制该url

基于python中requests库抓取nba比赛实时比分

4.下面开始编写代码

#coding='utf-8'
import requests
from prettytable import PrettyTable
import datetime
import json

def getMatch():
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
    }
    # 将上述中复制的url粘贴于此
    url = "http://matchweb.sports.qq.com/kbs/list?from=NBA_PC&columnId=100000&startTime=2018-10-25&endTime=2018-10-31&callback=ajaxExec&_=1540442149442"     #   http://nba.stats.qq.com/schedule/
    web_data = requests.get(url, headers=header)
    web_data.encoding = 'utf-8'
    #print(web_data.text)
    #print(type(web_data))
    datas = json.loads(web_data.text[9:-1])  # dumps是将dict转化成str格式,loads是将str转化成dict格式。
    today = datetime.datetime.now().strftime('%Y-%m-%d')  #获得当天日期 如2018-10-26
    todaydata = datas['data'][today]
    pt = PrettyTable()
    pt._set_field_names(('leftEnName rightEnName leftGoal rightGoal quarter quarterTime startTime').split(' '))
    for one in todaydata:
        #print(one)
        rightEnName = one['rightEnName']     # rightName
        leftEnName = one['leftEnName']   # leftName
        leftGoal = one['leftGoal']
        rightGoal = one['rightGoal']
        starttime = one['startTime']  # 开始时间
        quarter = one['quarter'][1:2] # 第几节
        quartertime = one['quarterTime']  # 每一节剩余时间
        pt.add_row([leftEnName, rightEnName, leftGoal, rightGoal, quarter, quartertime, starttime])
    print(pt)
    
# 主函数
if __name__ == "__main__":
getMatch()

5.运行结果如下

基于python中requests库抓取nba比赛实时比分