昨天我们写道可以用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文件(记得修改循环)。至此所有工作完成。