腾讯云函数使用方法及注意事项

本人博客

https://blog.thatcoder.cn

本文以建立一个python推送课表为例

  1. 写好python文件

  2. 打包依赖

  3. 配置云函数

  4. 大功告成

  • 写好python文件

    def get_class(name, passwd):登入并获得课表网站数据

    def findall(soundCode):将数据处理成answer数列

    def msg(answer):判断当天有无课并推送

    def strToBase64(s):按网站要求加密账号密码

    def planB():爬取网站失败时启动备选方案


# -*- codeing = utf-8 -*-
# @TIME : 2021/5/15 3:56
# @Auther : 幼稚鬼(Naive)
# @what are you to do? : 九江职业技术学院课表推送import base64
import linecache
import os
import re
import requests
from bs4 import BeautifulSoup
import pytz
import datetime
import pandas as pd
from pandas import DataFramepytz.country_timezones('cn')
tz = pytz.timezone('Asia/Shanghai')
rq = str(datetime.datetime.now(tz).strftime('%Y-%m-%d'))
xq = str(datetime.datetime.now(tz).isoweekday())
xq = int(xq)
cn = ""  # 星期几
if xq == 7:cn = "星期日"
elif xq == 1:cn = "星期一"
elif xq == 2:cn = "星期二"
elif xq == 3:cn = "星期三"
elif xq == 4:cn = "星期四"
elif xq == 5:cn = "星期五"
elif xq == 6:cn = "星期六"def strToBase64(s):strEncode = base64.b64encode(s.encode('utf8'))return str(strEncode, encoding='utf8')def get_class(name, passwd):encoded = strToBase64(name) + '%%%' + strToBase64(passwd)  # 自己在线转换base4  name+%%%+passwdparam = {  # 提交的表单'userAccount': name,'userPassword': passwd,'encoded': encoded  # base64加密后的字符串}head = {  # 请求头"rq": rq,"Cookie": "application/x-www-form-urlencoded; charset=UTF-8","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36","Referer": "https://www.baidu.com/","accept-encoding": "gzip, deflate, br","Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","cache-control": "max-age=0","Connection": "keep-alive","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"}session = requests.session()  # 使用session保持在线jsess = session.post(url="http://jiaowu.jvtc.jx.cn/jsxsd/xk/LoginToXk", params=param, headers=head)  # 发送请求if jsess.status_code == 200:  # 验证是否链接成功print("链接成功!")else:print("链接失败!")calls("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切")wx("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切")planB()param2 = {  # 获得课表jsp页面的表单"Referer": "http://jiaowu.jvtc.jx.cn/jsxsd/framework/xsMain_new.jsp?t1=1",  # 来自主页面的跳转"rq": rq}r = session.post("http://jiaowu.jvtc.jx.cn/jsxsd/framework/main_index_loadkb.jsp", params=param2)  # 提交课表时间请求,返回本周课表soundCode = r.text# all=session.post('http://jiaowu.jvtc.jx.cn/jsxsd/xskb/xskb_list.do')    #全课表,真心分析不动findall(soundCode)def findall(soundCode):demand = BeautifulSoup(soundCode, 'lxml')if len(demand.select('title')) != 0:if str(demand.title.string) == '登录':  # str(demand.title.string)验证是否还在登入页面,因为强智系统还是出问题 若还在则结束推送print("链接成功,当依然在登入页面!")calls("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切切")wx("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切切")planB()else:print("len(demand.select('title')) != 0  的未知错误,请处理!")calls("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切切切")wx("\n有内鬼,停止交易!\n\n服务器都炸了你还在这里吟诗作对,切切切")planB()else:print("进入主页成功,等待加载 * * * * * * ")week = re.findall('上课时间:第(.*?)周 星期', str(soundCode))[0]fo = open("log.txt", "w+")  # log.txt 第一行记载本周周数与最后更新时间fo.write(week + "\n" + rq)fo.close()axq = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']answer = [['星期一', []], ['星期二', []], ['星期三', []], ['星期四', []], ['星期五', []], ['星期六', []], ['星期日', []]]list = demand.select('p')  # 本周有的课都在<p>标签里answerindex = 0for i in axq:for li in list:string1 = str(li)stringclass = ''if string1.find(i) != -1:  # 查看p.string是否包含今天的星期数cnnamestart = re.findall("\[(.*?)\]节&lt;", string1)  # 匹配第几节j = str(namestart[0])if j == '01-02':j = "第一大节"elif j == '03-04':j = "第二大节"elif j == '05-06':j = "第三大节"elif j == '07-08':j = "第四大节"elif j == '09-10':j = "第五大节"elif j == '11-12':j = "第六大节"stringclass += jnamestart = re.findall("课程名称:(.*?)&lt;br/&gt;", string1)  # 匹配课程名称stringclass += "\n" + namestart[0]namestart = re.findall("上课地点:(.*?)\">", string1)  # 匹配上课地点stringclass += "\n" + namestart[0]if stringclass != '':answer[answerindex][1].append(stringclass)  # 把一节课的数据存入answeranswerindex += 1# print(answer)msg(answer)answer[6][1].append(None)answer[6][1].append(None)answer[6][1].append(None)answer[6][1].append(None)answer[6][1].append(None)answer[6][1].append(None)toexcl(answer, week)def msg(answer):  # 遍历answer进行QQ推送if len(answer[int(xq) - 1][1]) == 0:  # 无课判断print("休息日 无课\n\n业精于勤,荒于嬉;行成于思,毁于随——韩愈")calls("\n休息日 无课\n\n业精于勤,荒于嬉;行成于思,毁于随——韩愈")wx("\n休息日 无课\n\n业精于勤,荒于嬉;行成于思,毁于随——韩愈")else:lifeline = ""for i in answer[int(xq) - 1][1]:lifeline += '\n' + str(i) + '\n'print(lifeline)wx(lifeline)calls(lifeline)# 到这开始存csv
def calls(strs):  # qq推送pass# print("qq:",strs)qqone = 'qmsg酱的sky'requests.get(qqone)print("QQ推送成功")def wx(strs):  # 微信企业推送# print("wx:", strs)urlwxqy = "server酱的链接"parmwxqy = {'title': rq + ' ' + cn,'desp': strs,'openid': 'YouZhiGui'}requests.post(url=urlwxqy, params=parmwxqy)print("企业微信推送成功")def planB():print("开始执行方案B")week = linecache.getline(r'log.txt', 1)if len(week) == 3:week = week[0:2]elif len(week) == 2:week = week[0:1]lastdate = linecache.getline(r'log.txt', 2)[0:10]path = r'第{}周课表.csv'.format(week)if os.path.exists(path):passelse:path = r'第{}周课表.csv'.format(int(week) - 1)if os.path.exists(path):passelse:strs = "\n无历史课表\n\n生而为人,我很抱歉\n"print(strs)calls(strs)wx(strs)exit(0)pdarry = pd.read_csv(r'第{}周课表.csv'.format(week))list1 = pdarry[str(xq)].valuesstrs = '\n执行方案B\n数据来源:{}\n\n'.format(lastdate)for i in list1:if str(i) == '芜湖':i = ''strs += str(i)if strs == '\n执行方案B\n数据来源:{}\n\n'.format(lastdate):strs += "休息日 无课\n\n业精于勤,荒于嬉;行成于思,毁于随——韩愈\n"strs += "\n历史课表,仅供参考!!!"print(strs)calls(strs)wx(strs)print("执行方案B成功")def toexcl(anwser, week):  # 存csvprint("开始执行存csv")data = [anwser[0][1], anwser[1][1], anwser[2][1], anwser[3][1], anwser[4][1], anwser[5][1], anwser[6][1]]pdarrays = DataFrame(data, index=[1, 2, 3, 4, 5, 6, 7], columns=['第一大节', '第二大节', '第三大节', '第四大节', '第五大节', '第六大节'],dtype=str)pdarrays2 = pdarrays.fillna('芜湖')  # 查找空数据pdarrays3 = pdarrays2.T  # 行列数据转置pdarrays3.to_csv(r'第{}周课表.csv'.format(week))print("存入csv成功")def go(arg1,arg2):get_class('账号','密码')
  • 打包依赖

    强烈建议在linux下执行

    写好代码后在pycharm终端或cmd命令符到项目地址开始打包依赖,因为在腾讯云函数的依赖较少,需要自行上传

    因为我使用到 beautifulsoup4 库 ,所以代码1行下载beautifulsoup4库到项目文件夹的text下,并自己把py文件放入text下

pip3 install lxml beautifulsoup4 -t text/
cd text
pip freeze > requirements.txt
pip install -r requirements.txt
zip text.zip * -r
强烈建议在linux环境下执行2步操作,因为window下容易编码不一致导致云函数极易报错运行完结果如下  

图片

  • 配置云函数信息

    登入云函数 函数服务-新建

图片

创建方式 : 自定义创建函数代码:    提交方法 : 本地上传zip包 (就是传2步打包好的text.zip)执行方法 : py文件名.主方法入口 (主方法入口必须有两个形式参数,即使用不上,具体参考我py代码 222 行的 def go(arg1,arg2): 方法,所以我这里执行方法是 last1903.go )  

图片

触发器配置 :   触发周期 : 自定义Cron表达式 : 参考相关文档 --->云函数 定时触发器 - 开发指南 - 文档中心 - 腾讯云 (tencent.com)

图片

    触发器表达式参考 :   

图片

图片

  • 大功告成

    点击 部署 并自己 测试 一下

图片

特别鸣谢参考

略略略—— 腾讯云scf云函数,python依赖安装与上传的正确姿势 - 略略略—— - 博客园 (cnblogs.com)

Sharp 实战腾讯云云函数最简单部署包含第三方依赖的Python项目 - SharpG.的博客 (Sharpgan.Com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35182.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记:腾讯云服务器的使用

第一步 重装系统 第二步 重置密码 第三步 登录服务器 方法一&#xff1a; 使用腾讯云服务的登录方式 如果是【windows】&#xff0c;就像平时电脑一样使用即可 如果是【Linux】&#xff0c;输入 su 敲击回车 &#xff08; 然后提示你输入密码&#xff0c;注…

手把手教你进行腾讯云域名注册

本文转载自&#xff1a;手把手教你进行腾讯云域名注册 建站或企业信息化第一步就是注册域名&#xff0c;现梳理下在腾讯云注册域名步骤&#xff0c;分享给大家&#xff1a; 1、注册登录腾讯云&#xff08;若无账号先注册&#xff09; 2、绑定服务商 点击 这里 或 https://par…

R语言中如何利用ggplot2绘制qq图和boxplot图

文章目录 绘制qq图函数介绍geom_qq()参数介绍注意事项 例子 Using to explore the distribution of a variable绘制boxplot函数介绍参数介绍 例子利用分位点绘制箱线图 将qq图和箱线图进行融合函数介绍参数介绍注意事项 例子 绘制qq图 在ggplot2中绘制qq图需要两步&#xff0c…

关于R语言的绘图包ggplot2参数

ggplot2 在R语言中ggplot2是一个用来绘制图形的R包&#xff0c;gg的意思是Grammer of Graphics&#xff0c;意思就是绘图的语法&#xff0c;作者是Hadley Wickham&#xff0c;这个大神也是统计学诺贝尔奖的获得者 ggplot2的核心理念是将绘图与数据分离&#xff0c;数据相关的…

R语言ggplot2 | PCA分析及其可视化

主成分分析 主成分分析(PCA)的基本介绍PCA常用的参数标准化特征值和特征向量载荷得分 R语言实现PCA分析逐步计算PCA分析中的参数prcomp函数princomp函数 自定义函数实现PCA分析及其可视化 咱们常提到的PCA分析全称是Principal Components Analysis&#xff0c;即主成分分析&…

玩转数据可视化之R语言ggplot2:(十六)使用ggplot2编程(函数式绘图)

【R语言数据科学可视化篇】 🌸个人主页:JOJO数据科学📝个人介绍:统计学top3高校统计学硕士在读💌如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏✨本文收录于【R语言数据科学】本系列主要介绍R语言在数据科学领域的应用包括: R语言编程基础、R语言可…

[R语言]数据可视化包ggplot2教程及实例

前言 ggplot是一个拥有一套完备语法且容易上手的绘图系统&#xff0c;在Python和R中都能引入并使用&#xff0c;在数据分析可视化领域拥有极为广泛的应用。本篇从R的角度介绍如何使用ggplot2包&#xff0c;首先给几个我觉得最值得推荐的理由&#xff1a; 采用“图层”叠加的设…

R语言中强大的作图软件包ggplot2

R语言两大底层绘图系统 grid 图形系统可以很容易地控制图形基础单元&#xff0c;给予编程者创作图形极大的灵活性。grid 图形系 统还可以产生可编辑的图形组件&#xff0c;这些图形组件可以被复用和重组&#xff0c;并能通过 grid.layout()等函数&#xff0c; 把图形输出到指定…

R语言绘图之ggplot2包

6月份一直在忙期末考试&#xff0c;今天来迅速的学习下ggplot2包的简单绘图。 R的基础包里面也有很多画图函数&#xff0c;例如plot();barplot();qqplot(); 但是还有大名鼎鼎的ggplot2包&#xff0c;用这个包的函数画出的图比较漂亮&#xff0c;而且使用灵活。 在ggplot的官…

数据分析——R语言中ggplot2用法(1)

备忘录地址&#xff08;用来查询一些参数&#xff09; https://www.maths.usyd.edu.au/u/UG/SM/STAT3022/r/current/Misc/data-visualization-2.1.pdf R语言软件参数 R3.6.0 安装包、导入包 install.package(ggplot) library(ggplot)首先加载数据集 这里用的是示例数据&am…

R语言:ggplot2包详解及各类精美图形绘制

文章目录 1.1 Ggplot2介绍1.2 Ggplot2特点默认值迭代高级元素 1.3 Ggplot2映射组件layerScalecoordtheme 1.4 Ggplot2自带数据集1.5 Ggplot2组成部分1.6 美观性参数1.7 多子图绘制1.8 图形类型与函数1.9 曲线拟合1.10 箱线图1.11 频率直方图与密度曲线1.12 柱状图1.13 时间序列…

R语言学习—— ggplot2函数

最近在自学R语言&#xff0c;但是从纯粹的理论开始学习太慢了而且没有实操不太行&#xff0c;所以目前是在实际应用中查漏补缺&#xff0c;遇到什么临时学什么&#xff0c;然后把笔记都一一记录下啦。分享出来一边是方便自己查找&#xff0c;另一方面也是想方便和我一样入门的菜…

R语言可视化【ggplot2】

R语言可视化【ggplot2】 文章的文字/图片/代码部分/全部来源网络或学术论文或课件&#xff0c;文章会持续修缮更新&#xff0c;仅供学习使用。 目录 R语言可视化【ggplot2】 一、可视化介绍 二、不同情况适用的图形 类别比较&#xff1a; 数值关系&#xff1a; 数据分布…

马斯克成立XAI公司: 探索宇宙的真实本质

尊敬的读者朋友们&#xff0c;欢迎来到CSDN&#xff01;我是CSDN博主&#xff0c;今天非常高兴为大家带来这篇文章&#xff0c;我们将一起探索马斯克成立xAI公司的意义和目标&#xff0c;以及这个活动的丰富内容。让我们一起踏上这场奇幻之旅&#xff01; 【引言】 在科技界的…

2023年十大科技趋势预测【集锦:机构和GPT们的科技趋势预测,欢迎大家前来围观,看看谁预测得准~~~】

目录 2023年十大科技趋势预测——Claude+ 2023年十大科技趋势预测——GPT-4 1. 量子计算

不止ChatGPT,谷歌云 AI 方案早已厉兵秣马!

【本文由Cloud Ace整理发布&#xff0c;更多内容请访问 Cloud Ace 官网】 近日 ChatGPT 爆火&#xff0c;掀起热议&#xff0c;能聊天能写代码&#xff0c;还能写策划稿&#xff0c;AI 似乎已逐渐变得无所不能。 不过在 AI 对话上&#xff0c;谷歌早在17年就提出了 Dialogflow …

同声传译例子

效果&#xff1a; 准备开源中… 包括&#xff1a; 前端后端架构数据处理模型原理模型训练模型推理测试集评价方法&脚本部分数据

微信小程序 -- 获取语音,并将语音转为文字(插件:微信同声传译)

实现的功能是获取语音&#xff0c;并将语音转为文字&#xff0c;实现效果如下&#xff1a; 1. 小程序后台添加插件&#xff1a;微信同声传译 登录小程序后台&#xff1a;https://mp.weixin.qq.com 11. 设置 -> 第三方设置 -> 添加插件 12. 输入“微信同声传译”&#…

小程序使用微信同声传译进行语言播报(数字播报问题)

小程序使用微信同声传译进行语言播报&#xff08;数字播报问题&#xff09; 需求是产品提的 代码是我写的&#xff08;没办法&#xff0c;卑微打工人&#xff09; 废话不多说直接开始吧 首先在微信微信公众平台插件管理引入插件&#xff08;微信同声传译插件地址&#xff09;…

微信公众平台-设置-第三方设置-插件-搜不到微信同声传译插件

给小程序添加插件&#xff0c;按照官方的方法在插件那里搜不到微信同声传译插件 只好去微信服务平台搜一下 找到了微信同声传译&#xff0c;登录后选择给哪个小程序添加&#xff0c;添加成功后去小程序的微信公众平台看已经添加成功了&#xff0c;而且是已通过状态。