Python Requests实现天气预报

本文介绍如何使用Python的Requests库抓取指定城市的天气信息,并利用Pyttsx3库将其转换为语音播报。通过XPath从网页中提取所需数据,最终实现了一个简单的天气预报系统。

前提条件

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • Requests是一个很实用的Python HTTP客户端库。
  • Lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。
  • XPath 是一门在 XML 文档中查找信息的语言, XSLT 中的主要元素,XQuery 和 XPointer 均构建于 XPath 表达式之上。
  • Pyttsx3是 Python 中的文本到语音转换库。

实验环境

  • Python 3.x (面向对象的高级语言)
  • Requests(Python第三方库)pip3 install requests
  • Lxml(python第三方库)pip3 install lxml
  • Pyttsx3(Python第三方库) pip3 install pyttsx3

天气预报

目标网址

https://www.tianqi.com

实现步骤

  1. 设置网址和请求头
  2. 向网址发送请求并获取数据
  3. 筛选并过滤掉无用信息(如空格、不重要字符等)
  4. 把文字转化为语音

代码实现

import pyttsx3 # 语音播放库
import requests
from lxml import etree
# 城市
city = 'shenzhen'
# 目标网址
url = 'https://www.tianqi.com/%s/'%city
# 请求头,伪装成浏览器
headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
        }
# 向网址发送请求并获取数据
response = requests.get(url=url,headers=headers)
# print(response.text)
# 筛选信息
data = etree.HTML(response.text)
weather_list =  data.xpath('//dl[@class="weather_info"]//text()')
# print(weather_list)

# 将主要的信息拼在一起,即拼接成一个字符串
weather_text = ''
for text in weather_list:
    weather_text +=text
# 用空格替换掉字符
weather_text = weather_text.replace('[切换城市]',' ')
print(weather_text)
# 初始化一个说话对象
weather = pyttsx3.init()
# 设置说话内容
weather.say(weather_text)
# 开始执行
weather.runAndWait()

输出结果

在这里插入图片描述

Python实现天气预报

更多精彩内容,可点击进入Python日常小操作专栏查看

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FriendshipT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值