Python

使用Python向企业微信机器人发送天气信息的实现方法

浅时光博客 · 8月9日 · 2020年 11.8w 次已读

一、添加机器人

二、创建py脚本

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import re
import urllib.request
import json
import sys
import os
 
headers = {'Content-Type': 'application/json;charset=utf-8'}
##拷贝企业微信机器人生成的webhook
webhook = "企业微信机器人webhook"
def msg(text):
    message= {
     "msgtype": "text",
        "text": {
            "content": text, ##注意后面跟【逗号】
	    "mentioned_list":["@all"] ##@群里所有人,可以不加
        },
        "at": {
            "isAtAll": True
        }
    }
    print(requests.post(webhook,json.dumps(message),headers=headers).content)
url = "https://tianqi.moji.com/weather/china/shanghai/minhang-district"    ##要爬取天气预报的网址(china后面是各个省市的地址)
par = '(<meta name="description" content=")(.*?)(">)' 
 
opener = urllib.request.build_opener()
urllib.request.install_opener(opener)
html = urllib.request.urlopen(url).read().decode("utf-8")
 
##提取需要爬取的内容
data = re.search(par,html).group(2)
msg(data)

三、执行p文章来源(Source):https://www.dqzboy.comy脚本

[root@localhost script]# chmod +x weather.py 
[root@localhost script]# ./weather.py 
b'{"errcode":0,"errmsg":"ok"}'

四、查看群消息

  • 最后可以结合Linux的crontab去进行定时发送消息

五、判断节假日

  • 根据工作日和节假日进行消息推送,实现工作日进行推送,节假日则不进行推送消息原文链接:https://www.dqzboy.com;最后完整脚本如下。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import re
import urllib.request
import json
import sys
import os
import time
import time,datetime
holiday_info = {}
CUR_YEAR = '2020'  #定义年份
##这里字符集改为了gbk
headers = {'Content-Type': 'application/json;charset=gbk'}
webhook = "企业微信机器人webhook"
url = "https://tianqi.moji.com/weather/china/shanghai/minhang-district" 
par = '(<meta name="description" content=")(.*?)(">)'
opener = urllib.request.build_opener()
urllib.request.install_opener(opener)
html = urllib.request.urlopen(url).read().decode("utf-8")
data = re.search(par,html).group(2)
def msg(text):
    message= {
     "msgtype": "text",
        "text": {
            "content": text,
            "mentioned_list":["@all"]
        }
    }
    print(requests.post(webhook,json.dumps(message),headers=headers).content)
def init_holiday_info():
    global holiday_info
    rep = requests.get('http://tool.bitefu.net/jiari/?d=' + CUR_YEAR)
    info_txt = rep.content.decode()
    holiday_info =  json.loads(info_txt)

def check_if_is_work_day():
    day_info = time.strftime("%m%d",time.localtime(time.time()))
    print(day_info)
    if day_info in holiday_info[CUR_YEAR]:
        return False
    week = datetime.datetime.now().weekday()
    if 0 <= week and 4 >= week:
        msg(data)   #调用期企业微信推送内容
    return False

if __name__ == "__main__":
     init_holiday_info()
     check_if_is_work_day()

本文作者:浅时光博客
原文链接:https://www.dqzboy.com/2580.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

8 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. Ta。↘習慣江苏·淮安2022-4-20 · 11:02

    嗨 你好呀!请教一下怎么在发送天气的前面自定义固定文字呀!

  2. 我可爱的发芽啦~江苏·南通2021-9-1 · 10:55

    咋把爬到的内容里的墨迹天气替换别的啊

    • 浅时光博客2021-9-1 · 11:07

      url改成你要获取的地址

  3. 浪潮未知2020-8-21 · 12:56

    能推送其他消息吗,比如生产使用的ERP,MES的生产数据

    • 浅时光博客2020-8-21 · 13:00

      你可以根据你们平台,去爬取想要的数据去推送

  4. 努力未知2020-8-13 · 22:03

    这个好,666

  5. 月色朦胧未知2020-8-13 · 22:00

    666