赞
踩
抖音上看到女友分享的别人家程序员男友写的一个定时微信公众号推送消息的小功能,自己尝试写了一下,供大家参考。
首先分析需求、效果图,完成功能需要:
- 微信公众平台(注册一个测试账号)
- 接入微信公众平台——对话服务——发送消息——模板消息(业务通知)接口
- 完成第二步接口需获取access_token及接收方id(获取用户列表)
- 制定模板内容(当前时间、爬取天气状况、计算纪念日、计算生日、情话)
- 拼接模板内容
- windows制定计划任务实现每日问候!
附代码:
- # -*- encoding:utf-8 -*-
- import random
-
- import requests
- import json
- import datetime
- import calendar
- import time
- from bs4 import BeautifulSoup
- from zhdate import ZhDate
- import emoji
- import urllib.request
- import urllib.parse
-
- class SendMessage():
- def __init__(self):
- rq = self.get_rq()
- tq = self.get_tq()
- jnr = self.get_jnr()
- sr = self.get_sr()
- body =rq+"\n"+tq+"\n"+jnr+"\n"+sr;
- self.dataJson ={"first":"哈喽,宝贝!",
- "body":body+" ",
- "remark":self.get_qh()[random.randint(0, len(self.get_qh())-2)]+" "
- }
- self.appID = ''
- self.appsecret = ''
- self.template_id = ''//模板id
- self.access_token = self.get_access_token()
- self.opend_ids = self.get_openid()
-
-
- def get_qh(self):
- qhStr="";
- file_object1 = open("D:\workspaces\python/venv\qh.txt", 'r',encoding="utf-8")
- try:
- while True:
- line = file_object1.readline()
- if line:
- qhStr+=line.rstrip()+"#"
- else:
- break
- finally:
- file_object1.close()
- return qhStr.split("#")
-
- def get_rq(self):
- sysdate = datetime.date.today() # 只获取日期
- now_time = datetime.datetime.now() # 获取日期加时间
- week_day = sysdate.isoweekday() # 获取周几
- week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
- return '现在是' + str(now_time)[0:16] + ',' + week[week_day - 1]+"。"
-
- def get_tq(self):
- 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').string
- temperature_highest = temperature_highest.replace('℃', ' ')
-
- if info[1].find('i') is None: # 找到p标签中的第二个值'i'标签——最高温度
- temperature_lowest = ' ' # 用一个判断是否有最低温度
- else:
- temperature_lowest = info[1].find('i').string
- temperature_lowest = temperature_lowest.replace('℃', ' ')
-
- temp_list.append(temperature_highest) # 将最高气温添加到temp_list中
- temp_list.append(temperature_lowest) # 将最低气温添加到temp_list中
-
- final_list.append(temp_list) # 将temp_list列表添加到final_list列表中
- return '天气情况是' + final_list[0][1] + ',温度是' + final_list[0][3].strip() + '~' + \
- final_list[0][2].strip() + '摄氏度。'
-
- def get_sr(self):
- today = datetime.datetime.now()
- data_str = today.strftime('%Y-%m-%d')
- oneDay = ZhDate(today.year, 9, 6).to_datetime()
- difference = oneDay.toordinal() - today.toordinal()
- if difference >0 :
- return ("距离我滴宝生日,还有 %d 天。" % (difference))
- elif difference==0:
- return ('生日快乐!!声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/70747推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。