东京奥运会金牌排行

报考指南2022-09-06 11:03:47佚名

获取东京亚运会金牌排名榜及得奖人员序言

他人的90后,出征亚运会,我的90后,在家睡大觉。

作为编程爱好者,刚才用写了查询亚运会金牌排名榜,并通过云函数发送短信,查看每晚实时数据的小功能,为亚运会做些力所能及的事,推动亚运,中国加油!

排名榜代码

卫视网官网数据

金牌排名榜:

中国铜牌榜获得者:

截至到目前(2021年7月26日11:48),东京亚运会赛事第一天,我国金牌6,铜牌2,银牌5东京奥运会金牌排行,名次第一!

图中"跳水男子单人3米跳板"项目金牌获得者是:施廷懋/王涵夺

通过央网链接,打开F12,剖析发觉两个链接获取数据

话不多说,上代码

.py

import requests
import json
def getMedalsList(url, replaceTxt):
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        # 替换多余的内容
        data = str.replace(r.text, replaceTxt + "(", "")
        data = str.replace(data, ");", "")
        # 解码json,转成字典
        medals = json.loads(data)
        return medals
    except:
        return "Failed!"
# 获取排行榜数据
def getRanking():
    url = "https://api.cntv.cn/olympic/getOlyMedals?serviceId=pcocean&itemcode=GEN-------------------------------&t=jsonp&cb=omedals1"
    medals = getMedalsList(url, "omedals1")
    # 获取数据列表
    medalList = medals['data']['medalsList']
    res = ""
    for i in range(5):

东京奥运会金牌排行

        res += "第" + medalList[i]["rank"] + "名:" + medalList[i]["countryname"] + "(" + medalList[i]["countryid"] + ")n"         res += "金牌/银牌/铜牌:" + medalList[i]["gold"] + "/" + medalList[i]["silver"] + "/" + medalList[i]["bronze"] + "nn"     return res # 中国奖牌获得者数据 def getWinners():     url = "https://api.cntv.cn/Olympic/getOlyMedalList?t=jsonp&cb=OM&serviceId=pcocean&countryid=CHN"     owners = getMedalsList(url, "OM")     # 获取数据列表     ownerList = owners['data']['medalList']     gold = ""  # 金牌     silver = ""  # 银牌     bronze = ""  # 铜牌     for owner in ownerList:         medaltype = owner['medaltype']  # 奖牌类型         startdatecn = owner['startdatecn']  # 日期CN         item = owner['itemcodename'] + " " + owner['subitemname']  # 项目         playname = owner['playname']  # 运动员         if medaltype == "ME_GOLD":             gold += "日期:" + startdatecn + "n项目:" + item + "n获得者:" + playname+"nn"         elif medaltype == "ME_SILVER":             silver += "日期:" + startdatecn + "n项目:" + item + "n获得者:" + playname+"nn"         elif medaltype == "ME_BRONZE":             bronze += "日期:" + startdatecn + "n项目:" + item + "n获得者:" + playname+"nn"     res = "n-------金牌:---------n" + gold+"n-------银牌:---------n" + silver+"n-------铜牌:---------n"+ bronze     return res if __name__ == '__main__':     print(getRanking())     print(getWinners())

输出结果:

发送短信代码

mail.py

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from medals import getWinners, getRanking
def sendmail():
    sender = '*****@qq.com'  # 发送邮箱
    senderName = "致远"  # 发送者昵称

东京奥运会金牌排行

    password = '*****'  # 发送方QQ邮箱授权码     receivers = ['*****@qq.com',"*****@qq.com"]  # 接收邮件     # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码     str = getRanking() + getWinners()     message = MIMEText(str, 'plain', 'utf-8')     message['From'] = Header(senderName, 'utf-8')  # 发送者昵称     # 主题     subject = '东京奥运会金牌排行榜及获奖人员'     message['Subject'] = Header(subject, 'utf-8')     try:         client = smtplib.SMTP_SSL('smtp.qq.com', smtplib.SMTP_SSL_PORT)         print("连接到邮件服务器成功")         client.login(sender, password)         print("登录成功")         client.sendmail(sender, receivers, message.as_string())         print("邮件发送成功")     except smtplib.SMTPException:         print("Error: 无法发送邮件") if __name__ == '__main__':     sendmail()

布署云函数方式

登陆阿里云,找到函数估算FC:

1、创建服务及函数,选择环境

2、上传两个代码文件,.py和mail.py

3、编辑index.py

# -*- coding: utf-8 -*-
import logging
from mail import sendmail
# To enable the initializer feature (https://help.aliyun.com/document_detail/158208.html)
# please implement the initializer function as below:
# def initializer(context):
#   logger = logging.getLogger()
#   logger.info('initializing')
def handler(event, context):
    sendmail()

在“触发器”中可选择定时触发器东京奥运会金牌排行,具体操作可查看官方文档

相关推荐

猜你喜欢

大家正在看

换一换