我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python爬虫语音播报天气预报案例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python爬虫语音播报天气预报案例分析

这篇文章主要讲解了“Python爬虫语音播报天气预报案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬虫语音播报天气预报案例分析”吧!

一、前期准备

此案例中要用到的库有:requests、lxml、pyttsx3,可通过 cmd 命令进去命令提示符界面,通过如下命令安装:

pip install requests

pip install lxml

pip install pyttsx3

requests 比 urllib 更加方便,可以节约我们大量的工作。(用了 requests 之后,你基本都不愿意用 urllib 了)一句话,requests 是 Python 实现的最简单易用的 HTTP 库,建议爬虫使用 requests 库。

lxml 是 Python 的一个解析库,支持 HTML 和 XML 的解析,支持 XPath 解析方式,而且解析效率非常高。

pyttsx3 是一个款将文本转为语音的 Python 包,不同于其他 Python 包,pyttsx3 真的可以文本转语音。基本用法如下:

import pyttsx3

test = pyttsx3.init()

test.say('hello w3cschool!')

# 关键一句,若无,语音不会播放

test.runAndWait()

如果你是 linux 系统,pyttsx3 文本转语音不奏效。那么你可能还需要安装 espeak、ffmpeg 和 libespeak1。安装命令如下:

sudo apt update && sudo apt install espeak ffmpeg libespeak1

爬虫是爬取网页的相关内容,了解 HTML 能够帮助你更好的理解网页的结构、内容等。

TCP / IP 协议,HTTP 协议这些知识最好要了解一下,懂得基本含义,这样能够让你了解在网络请求和网络传输上的基本原理。

二、详细步骤

1、get 请求目标网址

我们首先导入 requests 库,然后就用它来获取目标的网页,我们请求的是天气网站中的厦门天气。

import requests

# 向目标url地址发送请求,返回一个response对象

resp = requests.get('https://www.tianqi.com/xaimen/')

# .text是response对象的网页html

print(resp.text)

当然仅凭这三行代码,很大的可能是爬取不到网页的,显示 403,这是什么意思呢?

403 错误是一种常见的网络错误类型,表示资源不可用,服务器知道客户的请求,但拒绝处理它。

这是因为我们写的爬虫如果不添加请求头进行访问的话,脚本会自行发送一个 Python 爬取的请求,而大部分的网站都会设施反爬虫机制,不允许网站内容被爬虫爬取。

那么,这就无解了吗?那肯定是不可能的,俗话说得好,上有政策,下有对策,我们想让目标服务器相应,那么我们就对我们得爬虫进行一下伪装即可。在我们这次的小案例中我们添加常用的 User-Agent 字段进行伪装即可。 

所以,改一下我们之前得代码,将爬虫伪装成浏览器请求,如下:

import requests

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}

# 向目标url地址发送请求,返回一个response对象

resp = requests.get('https://www.tianqi.com/xaimen/',headers=headers)

# .text是response对象的网页html

print(resp.text)     

有小伙伴就要问了:User-Agent 字段怎么来的呢?在这里我们以 Chrome 浏览器为例子,先随便打开一个网页,按键盘的 F12 或在空白处点击鼠标右键选择“检查”;然后刷新网页,点击“Network”再点击“Doc”,点击 Headers,在信息栏查看Request Headers 的 User-Agent 字段,直接复制,黏贴到编译器就可以用啦,注意要以字典形式添加呀。   

2、lxml.etree 解析网页  

我们从网页爬取到得数据杂乱,其中也只有一部分是我们真正想要得到得数据,例如在本案例中我们只需网页中厦门市的天气详细信息,如图所示:

那么我们如如何提取呢?这时候就要用到 lxml.etree 啦。  

观察网页结构可以发现我们所需要的天气信息都在“dl class='weather_info'”这一自定义列表下,于是乎我们只需在之前的代码后添加如下代码便能解析出该信息了:

html = etree.HTML(html)

html_data = html.xpath("//d1[@class='weather_info']//text()")  

不难发现,得到的信息和我们想要的信息不是很一致,网页中的空格及换行符也一并让我们提取了出来,生成的对象也是列表类型。

所以呢,我们接下来还需做如下处理:

txt = "欢迎使用天气播报助手"

for data in html_data:

txt += data

再次打印不难发现我们所需要的信息都已经有了,看上去也是很 nice,不过美中不足的是 [切换城市] 还在,我们呢也不想要它。

那么怎么办呢,咱用字符串方法替换掉它即可。

txt = txt.replace('[切换城市]','')

三、pyttsx3 播报天气信息

到这一步,我们想要的数据都已被我们爬取下来并处理好保存在 txt 变量里啦,现在就让他读出来,到了 pyttsx3 这个库上场的时候了,代码如下:

test = pyttsx3.init()

test.say(txt)

test.runAndWait()

至此,我们的小案例就做完啦,推荐好课:Python 静态爬虫、Python Scrapy网络爬虫。

一步步的摸索,到功能的实现,在其中得到的乐趣及成就感,相信小伙伴们是很开心的。

最后:完整源码奉上:

import requests

import pyttsx3

from lxml import etree

url = 'https://www.tianqi.com/xiamen/'

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}

resp = requests.get(url=url, headers=headers)  # 向目标url地址发送请求,返回一个response对象

html = resp.text  # .text是response对象的网页html

html = etree.HTML(html)

html_data = html.xpath("//dl[@class='weather_info']//text()")

txt = "欢迎使用天气播报助手"

for data in html_data:

    txt += data

print(txt)

txt = txt.replace('[切换城市]','')

txt += '\n播报完毕!谢谢!'

print(txt)

test = pyttsx3.init()

test.say(txt)

test.runAndWait()

感谢各位的阅读,以上就是“Python爬虫语音播报天气预报案例分析”的内容了,经过本文的学习后,相信大家对Python爬虫语音播报天气预报案例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python爬虫语音播报天气预报案例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python爬虫语音播报天气预报案例分析

这篇文章主要讲解了“Python爬虫语音播报天气预报案例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬虫语音播报天气预报案例分析”吧!一、前期准备此案例中要用到的库有:re
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录