Python爬取NBA每日比赛比分

        自从学会了爬虫的基本用法之后,一些网页上的基本信息都可以很容易的爬取下来。今天练习爬取了腾讯NBA官网上的每日赛程的比分,就是这个:

        这个网站的信息同样是存储在json文件中,在其HTML静态文件中找不到。所以我们还是老方法,直接去找到那个json文件:

        在使用Python工具爬取下来这一页后,再观察其中的信息。通常这种json文件的字典中有用的信息是被一些无用的信息所包围的,所以分析时我们就一层一层的输出该字典,直到发现对我们有用的信息。此json文件的开头内容如下:

        可以发现,data这个key所对应的value中有今天的日期和队名,所以我们就输出data中的‘2020-03-11’所对应的value,找到其中有用的信息如下:

        可以猜想,leftName和rightName对应的就是比赛双方的队名,而leftGoal和rightGoal对应的就是双方得分,而这一点也可以从上面的图片中验证。由此我们就得到了这场比赛双方的得分情况。Python代码如下:

import urllib.request
import json
#json文件的URL地址
url="https://matchweb.sports.qq.com/kbs/list?from=NBA_PC&columnId=100000&startTime=2020-03-11&endTime=2020-03-17&from=sporthp&callback=ajaxExec&_=1583909839470"
#补充请求头信息
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
        'Referer': 'https://nba.stats.qq.com/schedule/'
    }
#获取数据
req=urllib.request.Request(url=url,headers=headers)
text=urllib.request.urlopen(req).read().decode('gbk')
#去文件开头的无用子串“ajaxExec”
text=text.strip("ajaxExec")
#去掉文件头尾的小括号
text=text[1:len(text)-1]
#加载为Python对象dic
content=json.loads(text)
#取出当前日期
date=list(content['data'].keys())[0]
print(date)
#输出当日所有比赛的比分
for i in content['data'][date]:
    print(i['leftName'],end='')
    print(" ",end='')
    print(i['leftGoal'],end='')
    print(":",end='')
    print(i['rightGoal'],end='')
    print(" ",end='')
    print(i['rightName'])

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章