使用itchat发送天气信息
微信发送当日天气情况
念头萌生
之前在浏览网站的时候发现了篇文章「玩转树莓派」为女朋友打造一款智能语音闹钟,文章中介绍了使用树莓派打造一款语音播报天气的闹钟。
当时就想照着来,也自己做个闹钟。因为一直没有买到树莓派(主要是想不起来买),这件事就搁浅了。虽然硬件没有,但可以用微信啊。
下面开始正文部分。
获取天气信息
目前只是最初版本,只获取了当前的日期、天气状况、气温、风向和风力这五个信息。以上信息都是从中国天气网获取的。
上码:
from bs4 import BeautifulSoup
from urllib.request import urlopen
def get_weather(url):
#url = 'http://www.weather.com.cn/weather/101210402.shtml'
html = urlopen(url).read().decode('utf-8')
# print(html)
soup = BeautifulSoup(html, features='lxml')
today = soup.find('li', attrs={'class': 'sky skyid lv1 on'})
# print(today)
day = today.find('h1').get_text()
# print(day.get_text())
weather = today.find('p', {'class': 'wea'}).get_text()
# print(weather.get_text())
temp = today.find('p', {'class': 'tem'}).get_text()[1:-1]
# print(temp.get_text())
windy = today.find('p', {'class': 'win'}).find('em').find_all('span')
windy = windy[0]['title']+'转'+windy[1]['title']
# print(windy)
windy_power = today.find('p', {'class': 'win'}).find_all('i')[0].get_text()
# print('风力:',windy_power.get_text())
return day, weather, temp, windy, windy_power
get_weather()的参数是包含要查询地区的地区编码的URL链接,使用你要查询的地区编码替换实例中的“101210402”即可。关于地区编码的获取我这里提供两种方法:一种是从网上找现成的,另一种中就是在天气网上输入地区然后得到URL。个人推荐第二种方法,因为这样可以查到县/区这一级别。
使用itchat调用微信
itchat是一个开源的微信个人号接口,使用Python调用微信从未如此简单。关于项目的详细介绍和使用,请看这里。
上码:
import itchat
import weather_tools
def send_weather(url):
# 获取天气信息
day, weather, temp, windy, windy_power = weather_tools.get_weather(url)
# 拼接消息
msg = '今日天气:\n时间:{}\n天气:{}\n气温:{}\n风向:{}\n风力:{}'
msg = msg.format(day, weather, temp, windy, windy_power)
# 登录微信
itchat.auto_login(True)
# 发送消息
itchat.send(msg, toUserName='filehelper')
# 退出登录
itchat.logout()
if __name__ == "__main__":
url = 'http://www.weather.com.cn/weather/101210402.shtml'
send_weather(url)
send_weather()是向 文件助手发送当天的天气状况,‘filehelper’代表微信中的文件助手。
使用itchat发送天气信息的更多相关文章
- 利用json获取天气信息
天气预报信息获取是利用json获取的,网上有非常多资源,源码.因为上面涉及到非常多天气信息,包含湿度,出行建议等,以及加入了全部城市代码的资源包.为了练手了解json的原理.我仅获取诚笃城市的最高温, ...
- python 3.6 urllib库实现天气爬取、邮件定时给妹子发送天气
#由于每天早上要和妹子说早安,于是做个定时任务,每天早上自动爬取天气,发送天气问好邮件##涉及模块:#(1)定时任务:windows的定时任务# 配置教程链接:http://b ...
- Java通过webservice接口获取天气信息
通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io ...
- Linux网络编程之"获取网络天气信息"
需求分析: 1.需要Linux c 网络编程基础, 2.需要了解 http 协议 3.需要天气信息相关api(可以从阿里云上购买,很便宜的!) 4.需要cJSON解析库(因为获取到的天气信息一般是用c ...
- python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例
熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...
- Python简单程序爬取天气信息,定时发邮件给朋友【高薪必学】
前段时间看到了这个博客.https://blog.csdn.net/weixin_45081575/article/details/102886718.他用了request模块,这不巧了么,正好我刚用 ...
- NodeMCU获取并解析心知天气信息
NodeMCU获取并解析心知天气信息 1 注册心知天气并获取私钥 打开心知天气网站,点击注册按钮 填写基本信息注册心知天气账号,登录注册所填写的邮箱点击链接进行账号激活,随后出现如下界面 点击登录按钮 ...
- ESP32 IDF 获取天气信息
一.注册天气获取账号 我使用的知心天气,没有获取天气账号的小伙伴可以去注册一下,知心天气官网:https://www.seniverse.com/ 取得天气获取的API后,可以直接在浏览器中访问测试一 ...
- 半吊子学习Swift--天气预报程序-获取天气信息
昨天申请的彩云天气Api开发者今天上午已审核通过  饭后运动过后就马不停蹄的来测试接口,接口是采用经纬度的方式来获取天气信息,接口地址如下 https://api.caiyunapp.com/v2/ ...
随机推荐
- 嵌入式linux学习笔记
1.溢出:两个数相加,如果最高位的进位和此高位的进位不同,则产生溢出. 2.进位和溢出的概念不一样. 3.预取(取得是编译后得到的机器代码)-->译码-->执行 4.ARM的汇编指令长度是 ...
- eureka学习之二:自我保护机制
提供者和消费者:消费者通过注册服务名称,找rpc远程地址,调用提供者的接口 Eureka的自我保护机制:
- FullPage.js中文帮助文档API
fullPage.js的方法: 1. moveSectionUp() 功能:向上滚动一页. 2. moveSectionDown() 功能:向下滚动一页. 3. moveTo(section, sli ...
- APUE 书中 toll 函数
今天看unix环境高级编程时,随着书上的源码打了一遍,编译时提示 toll函数未定义, 找了半天(恕我对上下文不了解).看了英文版和源代码文件才知道, 中文版打印错了: toll => atol ...
- 2019 年百度之星·程序设计大赛 - 初赛一 1005 Seq(数学规律)
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=861&pid=1005 Sample Input Sampl ...
- SaaS|PaaS|iaas|
生物医疗大数据:云物移大智 云计算的三种模式:SaaS|PaaS|iaas 互联网:计算机之间的网络 物联网:物品之间的网络 移动:5G的三个特点:快:密:稳 大数据:4v:volume数据量大:ve ...
- Java源码之ArrayList
本文源码均来自Java 8 总体介绍 Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类.Set和List两个类继承于它.Set中不能包含重复的元素,也没有顺序来存放. ...
- Windows2012R2 设置NTP时间服务器
一.服务端配置 (Ntp服务器,客户端将根据这台服务器的时间进行同步) 1.微软键+R键,进入“运行”,输入“regedit”,进入注册表 2. HKEY_LOCAL_MACHINE\SYSTEM\C ...
- [LC] 59. Spiral Matrix II
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...
- [LC] 125. Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...