事件背景是经常有很多琐碎的事情需要在某个时间点去做,光靠人力去记,容易出现偏差,尤其是对容易迷糊的选手。
所以动手写了一套代码,可以按需要通过微信发送消息,不论是给自己充当自动提醒的备忘录还是给其他人发送定时消息,都可以在这套代码的基础上实现。
首先放上最终成果示例:
图中的文字都是可以根据自身需要而进行修改的,所以文章中附上的代码也只是抛砖引玉,读者可以根据自身需要而进行调整。本篇文章会分三个部分,依次介绍实现的方式,分别是
- 文本内容的确定
- 微信端发送消息的实现
- 定时任务的设置
第一步:文本内容的确定
这里说的“文本内容”实际指的就是你想要发送的信息,所以其内容是大相径庭的,需要根据自身需要进行调整,作者也就简单介绍一下截图里内容对应的代码,截图中的第一行“每日早安”是微信发消息时设置的,第二行是简单的打招呼,纯文字即可,此处按下不表。
第三行“现在是2021-10-07 11:25,星期四”,发送消息时的日期与星期数,其对应的python脚本如下:
# 发送内容 今日日期与星期数
import datetime
import calendar
import time
sysdate = datetime.date.today() # 只获取日期
now_time = datetime.datetime.now() # 获取日期加时间
week_day = sysdate.isoweekday() # 获取周几
week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
text_date = '现在是' + str(now_time)[0:16] + ',' + week[week_day -1 ]
print(text_date)
第四行“天气情况是晴,温度是8~19摄氏度”,这里会涉及一个简单的爬虫,需要我们去天气网站上爬取当前天气情况,脚本如下:
#发送内容:天气情况
import requests
from bs4 import BeautifulSoup
import datetime
url = 'http://www.weather.com.cn/weather/101010300.shtml'
sysdate=datetime.date.today()
r = requests.get(url, timeout=30) # 用requests抓取网页信息
r.raise_for_status() # 可以让程序产生异常时停止程序
r.encoding = r.apparent_encoding #编码格式
html=r.text
final_list = []
soup = BeautifulSoup(html, 'html.parser') # 用BeautifulSoup库解析网页 #soup里有对当前天气的建议
body = soup.body #从soup里截取body的一部分
data = body.find('div', {
'id': '7d'})
ul = data.find('ul')
lis = ul.find_all('li')
for day in lis:
temp_list = []
date = day.find('h1').string # 找到日期
if date.string.split('日')[0]==str(sysdate.day):
temp_list = []
date = day.find('h1').string # 找到日期
temp_list.append(date)
info = day.find_all('p') # 找到所有的p标签
temp_list.append(info[0].string)
if info[1].find('span') is None: # 找到p标签中的第二个值'span'标签——最高温度
temperature_highest = ' ' # 用一个判断是否有最高温度
else:
temperature_highest = info[1].find('span'