文章目录

  • 一、前言
  • 二、需要导入的库
  • 三、分析
    • 1、考研倒计时
    • 2、天气情况
    • 3、营养鸡汤
  • 四、完整代码
  • 五、Blogger’s speech

一、前言

对于考研,你还在每天数着还有多少天吗?对于天气,你还每天去看天气预报吗?你每天需要看一些励志话语来督促自己前进吗?
python可以合上述三者为一体帮你轻松实现你的日常!
请看下面详解。

二、需要导入的库

import requests
from lxml import etree
import json
import cv2
import pyttsx3
import datetime

三、分析

1、考研倒计时

对于倒计时,我使用了datetime库,得到实时时间,并拆分出年份、月份和日期,自己设置研究生考试时间,然后进行两者相减。函数代码如下:

# 获取日期和倒计时
def get_time():a = datetime.datetime.now()  # 实施时间y = str(a.year)m = str(a.month)d = str(a.day)  # 转换为字符串,便于打印time = y + '年' + m + '月' + d + '日' + '\n'b = datetime.datetime(2021, 12, 25)  # 自己设置的研究生考试时间count_down = (b - a).days  # 考研倒计时return time, count_down

2、天气情况

南通为例,爬取网页的链接为:http://www.weather.com.cn/weather/101190501.shtml
(如果需要切换成其它的城市,把上述链接的101190501,改为需要切换的城市的id即可。在上述链接页面,右击打开检查页面之后,下图为详细步骤图)

内容的获取,我之前写过一篇文章,更详细一点。
《python爬取天气预报数据,并实现数据可视化》

实现代码:

def get_weather():url = 'http://www.weather.com.cn/weather/101190501.shtml'response = requests.get(url)response.encoding = 'utf-8'response = response.text  # 获取页面html = etree.HTML(response)day_weather = '天气状况:' + html.xpath('//*[@id="7d"]/ul/li[1]/p[1]/text()')[0] + '\n'  # 获取天气,白天的天气high = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/span/text()')low = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/i/text()')  # 获取对应的两个温度# 因为页面在晚上会有小变化,所以使用条件语句,来排除因变化引起的bugif high == []:day_temperature = '室外温度:' + low[0] + '\n'else:day_temperature = '室外温度:' + low[0].replace('℃', '') + '~' + high[0] + '℃\n'  # 获取温度# 获取两个风向wind_1 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[1]/@title')wind_2 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[2]/@title')# 因为有时候,会出现两个风向是同一个风向的情况,所以使用条件语句排除if wind_2 == []:wind = wind_1[0] + '\n'elif wind_1[0] == wind_2[0]:wind = wind_1[0] + '\n'else:wind = wind_1[0] + '转' + wind_2[0] + '\n'# 因为风级有时候会出现“<",语音的时候会认为是爱心符号,所以使用替换,改为文字”低于“wind_3 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/i/text()')[0].replace('<', '低于').replace('>', '高于')day_wind = '风向情况:' + wind + wind_3 + '\n'  # 获取风向及风级return day_weather, day_temperature, day_wind

3、营养鸡汤

为了趣味性,并且顺便练习听力,我爬取了《爱词霸》的中英文每日一句,并且将图片链接爬取,进行展示(图片不会保存,随着代码运行结束,图片也会消失)
因为网上有接口,所以直接借助接口之间爬取。
代码如下:

def get_content():url = 'http://open.iciba.com/dsapi/'  # 网上找的APIresponse = requests.get(url=url)json_s = json.loads(response.text)jitang = json_s.get("content") + '\n'  # 每日鸡汤translation = json_s.get("note") + '\n'  # 中文翻译image_url = json_s.get("fenxiang_img")  # 图片链接return jitang, translation, image_url

四、完整代码

在主函数中,使用pyttsx3库实现语音播报功能,使用cv2实现图片的展示功能。
代码如下:

# -*- coding: UTF-8 -*-
"""
@Author  :远方的星
@Time   : 2021/3/10 16:44
@CSDN    :https://blog.csdn.net/qq_44921056
@腾讯云   : https://cloud.tencent.com/developer/column/91164
"""
import requests
from lxml import etree
import json
import cv2
import pyttsx3
import datetime# 获取日期和倒计时
def get_time():a = datetime.datetime.now()  # 实施时间y = str(a.year)m = str(a.month)d = str(a.day)  # 转换为字符串,便于打印time = y + '年' + m + '月' + d + '日' + '\n'b = datetime.datetime(2021, 12, 25)  # 自己设置的研究生考试时间count_down = (b - a).days  # 考研倒计时return time, count_down# 获取南通当日天气情况
def get_weather():url = 'http://www.weather.com.cn/weather/101190501.shtml'response = requests.get(url)response.encoding = 'utf-8'response = response.text  # 获取页面html = etree.HTML(response)day_weather = '天气状况:' + html.xpath('//*[@id="7d"]/ul/li[1]/p[1]/text()')[0] + '\n'  # 获取天气,白天的天气high = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/span/text()')low = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/i/text()')  # 获取对应的两个温度# 因为页面在晚上会有小变化,所以使用条件语句,来排除因变化引起的bugif high == []:day_temperature = '室外温度:' + low[0] + '\n'else:day_temperature = '室外温度:' + low[0].replace('℃', '') + '~' + high[0] + '℃\n'  # 获取温度# 获取两个风向wind_1 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[1]/@title')wind_2 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[2]/@title')# 因为有时候,会出现两个风向是同一个风向的情况,所以使用条件语句排除if wind_2 == []:wind = wind_1[0] + '\n'elif wind_1[0] == wind_2[0]:wind = wind_1[0] + '\n'else:wind = wind_1[0] + '转' + wind_2[0] + '\n'# 因为风级有时候会出现“<",语音的时候会认为是爱心符号,所以使用替换,改为文字”低于“wind_3 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/i/text()')[0].replace('<', '低于').replace('>', '高于')day_wind = '风向情况:' + wind + wind_3 + '\n'  # 获取风向及风级return day_weather, day_temperature, day_wind# 获取每日鸡汤
def get_content():url = 'http://open.iciba.com/dsapi/'  # 网上找的APIresponse = requests.get(url=url)json_s = json.loads(response.text)jitang = json_s.get("content") + '\n'  # 每日鸡汤translation = json_s.get("note") + '\n'  # 中文翻译image_url = json_s.get("fenxiang_img")  # 图片链接return jitang, translation, image_urldef main():time, count_down = get_time()day_weather, day_temperature, day_wind = get_weather()jitang, translation, image_url = get_content()count_down = '距离考研还有{}天,你准备好了吗?'.format(count_down) + '\n'a = '下面为您播报今日天气状况\n'b = '每日一句\n'time = '今天是' + timeweather = day_weather + day_temperature + day_windcontent = jitang + translationtext = time + count_down + a + weather + b + content  # 语音内容voice = pyttsx3.init()  # 初始化# rate = voice.getProperty('rate')voice.setProperty('rate', 150)  # 语速,范围在0-200之间voice.setProperty('volume', 1.0)  # 范围在0.0-1.0之间voice.say(text)  # 语音内容voice.runAndWait()cap = cv2.VideoCapture(image_url)  # 展示图片if(cap.isOpened()):ret, img = cap.read()my_image = cv2.resize(img, dsize=None, fx=0.5, fy=0.5)cv2.imshow("You will succeed in the end", my_image)cv2.waitKey()print(time, weather, content)if __name__ == "__main__":main()

**最终的实现是语音播报,我就不展示结果的GIF了。**

五、Blogger’s speech

写完之后,调试了好几天,排除了好几个bug(果然我只会写bug ),如果对你有所帮助,还请,点赞,关注,收藏,一键三连哟。

作者:远方的星
CSDN:https://blog.csdn.net/qq_44921056
腾讯云:https://cloud.tencent.com/developer/column/91164
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

python也可以成为贴心小管家--每日播报考研倒计时、天气情况、还有“营养鸡汤”相关推荐

  1. Python贴心小管家源代码--每日播报高考倒计时、天气情况、还有“营养鸡汤”

    对于高考,你还在每天数着还有多少天吗?对于天气,你还每天去看天气预报吗?你每天需要看一些励志话语来督促自己前进吗? python可以合上述三者为一体帮你轻松实现你的日常! 运行截图: 很多人学习pyt ...

  2. python画图横轴刻度间隔设置为3个月_Python 天气情况数据分析及可视化

    Python 天气情况数据分析及可视化 环境配置 Pycharm开发环境 python 版本 python3.7 Anconda 集成开发环境 第三方库导入 ## pip install 模块 清华大 ...

  3. python语音播报库-基于python GUI开发的点名小程序(语音播报)

    #实现名单轮播.点名.语音播报功能 # -*- coding:utf8 -*- # # -------------------------------------------------------- ...

  4. python读音播报-基于python GUI开发的点名小程序(语音播报)

    #实现名单轮播.点名.语音播报功能 # -*- coding:utf8 -*- # # -------------------------------------------------------- ...

  5. python 语音播报库_基于python GUI开发的点名小程序(语音播报)

    #实现名单轮播.点名.语音播报功能 #优化版本1 # -*- coding:utf8 -*- # # ------------------------------------------------- ...

  6. 微信小程序自动推送当天天气情况Java版

    针对网上小程序推送天气消息进行二次优化与细节调整,更快速与方便的进行完成自己功能的开发 注意全文是在别人代码基础之上做的二次优化 教程开始: 1.注册微信测试账号 第二步: 彩虹屁平台注册 拉代码 修 ...

  7. 海尔小管家1号店嗨购盛典引爆 市场份额稳居红星美凯龙第一

    8月29日,海尔智能浴霸物联场景发布&小管家1号店嗨购盛典在宁夏银川兴庆区红星美凯龙成功举办,海尔智家APP.微赞.一直播.中关村在线.泡泡网等多平台进行了线上直播.现场不仅发布了智能浴霸等物 ...

  8. 微信控制家庭智能小管家机器人资料免费下载

    微信控制家庭智能小管家机器人资料免费下载 今天分享微信控制家庭智能小管家机器人(附语音聊天.人脸检测.自主巡航等)的资料,内容比较多,这边文章不够放,更详细资料到闯客网技术论坛下载,或加群获取:813 ...

  9. 从0到1使用python开发一个半自动答题小程序

    从0到1使用python开发一个半自动答题小程序 前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生 ...

最新文章

  1. CSS之定位(绝对定位元素的布局)
  2. 说说大型高并发高负载网站的系统架构【转】
  3. 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
  4. hdu 4945 2048(DP)
  5. redis 多数据库 database配置项解析
  6. ABAP 向上取整和向下取整 CEIL FLOOR
  7. 【OpenCV 例程200篇】20. 图像的按位运算
  8. 支付宝 报错 rsa_private read error : private key is NULL解决方法
  9. 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
  10. Solartimes共识——PowerDesigner设计——引用的命名
  11. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.56%
  12. 应用HTMLParser解释操作HTML内容
  13. php留言板验证验证码,留言板7 图形验证码
  14. [UE4]关闭自动曝光
  15. 二极管PN结的形成原理浅述
  16. 计算机的音频管理器在哪里打开,Realtek高清晰音频管理器怎么找不到打开教程...
  17. 含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)
  18. python 听歌识曲_Python实现提取谷歌音乐搜索结果的方法
  19. 2018 Arab Collegiate Programming Contest (ACPC 2018) G. Greatest Chicken Dish (线段树+GCD)
  20. 车机蓝牙通话流程分析的流程分析

热门文章

  1. 华为p50pro怎刷机华为p50怎么解锁华为p50pro能刷机吗华为p50强制刷机华为p50解账户锁华为P50pro解账户锁华为p50pro解锁账户华为p50怎么解锁帐号华为p50忘记解锁密码怎么办
  2. python relativedelta函数及与timedelta区别
  3. ​Linux运维发展方向及运维技能
  4. Redis数据库相关知识总结
  5. 【高等数学】基础理论归纳
  6. 最新发布:2022斯坦福AI指数报告
  7. netty对接青鸟消防主机
  8. python安装contrib包_如何安装opencv_contrib及解决其安装编译问题
  9. 万卷书 - 如何讲好故事 [Wired for Story]
  10. python爬虫——抓取煎蛋网ooxx妹子图的一个小工具