基于python中requests库抓取nba比赛实时比分
- 首先总结下json用法,参考资料为:
https://www.cnblogs.com/xiaomingzaixian/p/7286793.html
- json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
下面开始进入正题,数据源来自腾讯nba
http://nba.stats.qq.com/schedule/
鼠标右击->检查元素(或直接按F12),选择network->js,如下所示
2.在Name下面查找到比分数据信息,点击Response查找后台数据
3然后在其Headers中获取其请求url,复制该url
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.运行结果如下