当前位置:   article > 正文

实战|使用python推送微信公众号消息(哄女友专用)_python微信公众号订阅通知

python微信公众号订阅通知

抖音上看到女友分享的别人家程序员男友写的一个定时微信公众号推送消息的小功能,自己尝试写了一下,供大家参考。

先上效果图:

首先分析需求、效果图,完成功能需要:

附代码: 

  1. # -*- encoding:utf-8 -*-
  2. import random
  3. import requests
  4. import json
  5. import datetime
  6. import calendar
  7. import time
  8. from bs4 import BeautifulSoup
  9. from zhdate import ZhDate
  10. import emoji
  11. import urllib.request
  12. import urllib.parse
  13. class SendMessage():
  14. def __init__(self):
  15. rq = self.get_rq()
  16. tq = self.get_tq()
  17. jnr = self.get_jnr()
  18. sr = self.get_sr()
  19. body =rq+"\n"+tq+"\n"+jnr+"\n"+sr;
  20. self.dataJson ={"first":"哈喽,宝贝!",
  21. "body":body+" ",
  22. "remark":self.get_qh()[random.randint(0, len(self.get_qh())-2)]+" "
  23. }
  24. self.appID = ''
  25. self.appsecret = ''
  26. self.template_id = ''//模板id
  27. self.access_token = self.get_access_token()
  28. self.opend_ids = self.get_openid()
  29. def get_qh(self):
  30. qhStr="";
  31. file_object1 = open("D:\workspaces\python/venv\qh.txt", 'r',encoding="utf-8")
  32. try:
  33. while True:
  34. line = file_object1.readline()
  35. if line:
  36. qhStr+=line.rstrip()+"#"
  37. else:
  38. break
  39. finally:
  40. file_object1.close()
  41. return qhStr.split("#")
  42. def get_rq(self):
  43. sysdate = datetime.date.today() # 只获取日期
  44. now_time = datetime.datetime.now() # 获取日期加时间
  45. week_day = sysdate.isoweekday() # 获取周几
  46. week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
  47. return '现在是' + str(now_time)[0:16] + ',' + week[week_day - 1]+"。"
  48. def get_tq(self):
  49. url = 'http://www.weather.com.cn/weather/101010300.shtml'
  50. sysdate = datetime.date.today()
  51. r = requests.get(url, timeout=30) # 用requests抓取网页信息
  52. r.raise_for_status() # 可以让程序产生异常时停止程序
  53. r.encoding = r.apparent_encoding # 编码格式
  54. html = r.text
  55. final_list = []
  56. soup = BeautifulSoup(html, 'html.parser') # 用BeautifulSoup库解析网页 #soup里有对当前天气的建议
  57. body = soup.body # 从soup里截取body的一部分
  58. data = body.find('div', {'id': '7d'})
  59. ul = data.find('ul')
  60. lis = ul.find_all('li')
  61. for day in lis:
  62. temp_list = []
  63. date = day.find('h1').string # 找到日期
  64. if date.string.split('日')[0] == str(sysdate.day):
  65. temp_list = []
  66. date = day.find('h1').string # 找到日期
  67. temp_list.append(date)
  68. info = day.find_all('p') # 找到所有的p标签
  69. temp_list.append(info[0].string)
  70. if info[1].find('span') is None: # 找到p标签中的第二个值'span'标签——最高温度
  71. temperature_highest = ' ' # 用一个判断是否有最高温度
  72. else:
  73. temperature_highest = info[1].find('span').string
  74. temperature_highest = temperature_highest.replace('℃', ' ')
  75. if info[1].find('i') is None: # 找到p标签中的第二个值'i'标签——最高温度
  76. temperature_lowest = ' ' # 用一个判断是否有最低温度
  77. else:
  78. temperature_lowest = info[1].find('i').string
  79. temperature_lowest = temperature_lowest.replace('℃', ' ')
  80. temp_list.append(temperature_highest) # 将最高气温添加到temp_list中
  81. temp_list.append(temperature_lowest) # 将最低气温添加到temp_list中
  82. final_list.append(temp_list) # 将temp_list列表添加到final_list列表中
  83. return '天气情况是' + final_list[0][1] + ',温度是' + final_list[0][3].strip() + '~' + \
  84. final_list[0][2].strip() + '摄氏度。'
  85. def get_sr(self):
  86. today = datetime.datetime.now()
  87. data_str = today.strftime('%Y-%m-%d')
  88. oneDay = ZhDate(today.year, 9, 6).to_datetime()
  89. difference = oneDay.toordinal() - today.toordinal()
  90. if difference >0 :
  91. return ("距离我滴宝生日,还有 %d 天。" % (difference))
  92. elif difference==0:
  93. return ('生日快乐!!
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/70747
    推荐阅读
    相关标签