昨天我们写到可以用python向手机发送短信,但是内容空洞,今天我就教大家将每日天气用短信定时发送到手机。

如下图:

首先先获取到天气信息,这里我用的是  tianqi.com 这个网站,进入网站输入自己地区,图中红色部分即是我们需要的信息,当然你也可以选择你想要的数据。

我这里用xpath获取所需数据,代码如下:

# -*- coding: utf-8 -*-
'''
#intent      :
#Author      :Michael Jack hu
#start date  : 2019/1/15
#File        : weather.py
#Software    : PyCharm
#finish date :
'''
import requests
from lxml import etree

def get_text():
    url = "http://www.tianqi.com/zhongmou/life.html"
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
    response = requests.get(url=url,headers=headers)

    html = response.text
    html_xpath = etree.HTML(html)


    rain = html_xpath.xpath('/html/body/div[4]/div[1]/ul/li[1]/p/text()')[0]
    clothes = html_xpath.xpath('/html/body/div[4]/div[1]/ul/li[6]/p/text()')[0]
    ziwaixian = html_xpath.xpath('/html/body/div[4]/div[1]/ul/li[3]/p/text()')[0]
    travel = html_xpath.xpath('/html/body/div[4]/div[1]/ul/li[7]/p/text()')[0]
    shaiyifu = html_xpath.xpath('/html/body/div[4]/div[1]/ul/li[8]/p/text()')[0]

    url2 = "http://www.tianqi.com/zhongmou/"
    response2 = requests.get(url=url2,headers=headers)
    html2 = response2.text
    html_xpath2 = etree.HTML(html2)
    wendu = html_xpath2.xpath('/html/body/div[5]/div/div[1]/dl/dd[3]/p/b/text()')[0]
    shidu = html_xpath2.xpath('/html/body/div[5]/div/div[1]/dl/dd[4]/b[1]/text()')[0]
    fengxiang = html_xpath2.xpath('/html/body/div[5]/div/div[1]/dl/dd[4]/b[2]/text()')[0]
    tianqi = html_xpath2.xpath('/html/body/div[5]/div/div[1]/dl/dd[3]/span/b/text()')[0]
    wen = html_xpath2.xpath('/html/body/div[5]/div/div[1]/dl/dd[3]/span/text()')[0]
    text = '\n' + "今日天气:" + tianqi +'\n' + '今日温度:' + wen +'\n' + '当前温度:' + wendu +'℃' + '\n' + shidu +'\n' + fengxiang +'\n' + rain +'\n' + clothes + '\n' + ziwaixian + '\n' + travel + '\n' + shaiyifu
    return text

 

之后仅需修改昨天的两行代码

将text=‘123’修改为

text = get_text()

并加入

from weather import get_text

至此,代码就编写完成。

 

定时发送功能

 

这个功能的实现有两种方法,一是放在我们的电脑里面让他一直运行,这当然不太好。

所以我们需要一台服务器,将脚本放在服务器中,让其一直运行,就可以实现了。

因为是在Linux环境中,所以代码要有所修改:

在每个文件最上面加入

#/usr/bin/env python

这个为了告诉文件python的位置。

然后再Linux命令行运行:python msg.py即可,因为是死循环,所以会一直循环,time.sleep(3600*24)为24小时,所以每24小时给自己发送一次信息。

但是上面这种方法会一直占用服务器内存,所以我们可以用Linux的crontab实现定时运行。

在命令行输入:

crontab -e

进入到添加定时任务界面,添加语句:

0 8,13 * * * python /root/msg.py

这句话的意思是每天的八点和十三点运行一次msg.py文件(记得修改循环)。至此所有工作完成。

Logo

更多推荐