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'])

 

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