利用python脚本实现企业微信机器人定时天气预报

代码分析

import requests #这个库用来获取网页信息
from bs4 import BeautifulSoup #这个库用来分析选择网页的信息
 
def get_content(url, data=None):    #获取城市的天气网页信息
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return 产生异常
 
 
def get_data(html,city):    #处理网页信息提取近七天的天气情况
    final_list = []
    soup = BeautifulSoup(html, html.parser)
    body = soup.body
    data = body.find(div, {id: 7d})
    ul = data.find(ul)
    lis = ul.find_all(li)
 
    for day in lis:
        temp_list = [city]
 
        date = day.find(h1).string
        temp_list.append(date)
 
        info = day.find_all(p)
        temp_list.append(info[0].string)
 
        if info[1].find(span) is None:
            temperature_highest =  
        else:
            temperature_highest = info[1].find(span).string
            temperature_highest = temperature_highest.replace(℃,  )
 
        if info[1].find(i) is None:  #
            temperature_lowest =  
        else:
            temperature_lowest = info[1].find(i).string
            temperature_lowest = temperature_lowest.replace(℃,  )
 
        temp_list.append(temperature_highest)
        temp_list.append(temperature_lowest)
 
        wind_scale = info[2].find(i).string
        temp_list.append(wind_scale)
 
        final_list.append(temp_list)
    return final_list
 
 
 
 
def save_data(data,filename):    #将近七天的天气信息存放在文件中
    f=open(filename,"wt")
    for line in data:
        f.write(str(line)+
)
    f.close()


def postrsg(filename):    #取出信息并且用机器人发送消息
    with open(filename,r) as f:
    	lines = f.readlines()
    	first = lines[0]
    	sec = lines[1].rstrip("
")
    headers = {"Content-Type": "text/plain"}
    data = {
      "msgtype": "text",
      "text": {
         "content": first+sec,
      }
    }
    r = requests.post(
      	url=群机器人webhook地址,headers=headers, json=data)
    print(r.text)

 
if __name__ == __main__:
        url =http://www.weather.com.cn/weather/101020100.shtml
        html = get_content(url)
        result = get_data(html,上海)
        save_data(result,w.txt)
        postrsg(w.txt)

定时发送

利用crontab,编写crontab.cron文件

//eg.
//每天早上6点
//注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
0 6 * * * echo "Good morning." >> /tmp/test.txt 

//每两个小时(第一个为15,指明没两个小时的第15min中执行一次)
15 */2 * * * echo "Have a break now." >> /tmp/test.txt 
 
//晚上11点到早上8点之间每两个小时和早上八点
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

修改完crontest.cron后执行: crontab crontest.cron >~/log sudo /etc/init.d/cron restart

参考:

step1 : 用python编写抓取天气的脚本

step2 : python下使用curl使机器人发送消息

step3 : 利用cron定时运行脚本

    https://www.cnblogs.com/kaituorensheng/p/4494321.html
经验分享 程序员 微信小程序 职场和发展