Python—实现语音自动播报最新疫情信息

自己做了一个功能,自动去卫健委网站获取最新疫情信息,并通过语音播报,很有意思。

需要两个文件 一个是city.cfg,一个是test.py,注意要先安装pip install pyttsx3,看看能否
import pyttsx3 如果报错
那么去python 的安装目录 比如 cd python/Lib/site-packages/win32ctypes 然后试着
import pywin32_system32 或者
import win32ctypes
一般都能成,除非你的电脑没有文字转语音功能。

city.cfg

[厦门]
url=https://hfpc.xm.gov.cn/
title=新型冠状病毒肺炎疫情情况

[上海]
url=https://wsjkw.sh.gov.cn/
title=新冠肺炎

[河南]
url=http://wsjkw.henan.gov.cn/
title=最新通报

[湖南]
url=http://wjw.hunan.gov.cn/
title=新型冠状病毒肺炎疫情

[广东]
url=http://wsjkw.gd.gov.cn/
title=新冠肺炎疫情情况

[深圳]
url=http://wjw.sz.gov.cn/
title=新冠肺炎疫情情况

test.py

#cd python/Lib/site-packages/win32ctypes
import pywin32_system32
import pyttsx3
from lxml import etree
import requests,os
import datetime
from configparser import ConfigParser

timestamp=datetime.datetime.now()-datetime.timedelta(days=1)
day=timestamp.day
month=timestamp.month
datestr="{}月{}日".format(month,day)    #昨日日期
#发音函数
def sound(msg):
  engine = pyttsx3.init()
  engine.setProperty('rate', 220)
  engine.say(msg)
  engine.runAndWait()

cfg=ConfigParser()
cfg.read('city.cfg',encoding='utf-8')
citylist=cfg.sections()
header = {
  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
}
excludelist=['厦门','上海']
for city in citylist:                     #遍历城市
  if(city in excludelist):	#豁免的城市
    continue
  print("------------------------------",city,"-------------------------\n")
  url=cfg[city]["url"]
  res=requests.get(url,headers=header)    #请求卫健委主页
  res.encoding='utf-8'
  if(res.status_code!=200):
    sound("请求卫健委主页失败"+str(res.status_code))
  srclist=etree.HTML(res.text).xpath('//a')
  title=cfg[city]["title"]                #不同城市的标题不同
  hreflist=[i.attrib['href'] for i in srclist if 'title' in i.attrib and title in i.attrib['title']]
  if not hreflist:    #如果取不到标题
    hreflist=[i.attrib['href'] for i in srclist if i.text and '最新通报' in i.text]
    if not hreflist:
      print(city,'实在找不到最新疫情的标题了')
      break
  href=hreflist[0] 
  if('http' in href):
    uri=href
  else:
    uri=url+href                     
  result=requests.get(uri,headers=header)                      #请求疫情详情页
  result.encoding='utf-8'
  contents=etree.HTML(result.text).xpath("//p/text()")         #paragraphs
  if not contents:                                             #如果取不到内容
    contents=etree.HTML(result.text).xpath("//p/span/text()")  #paragraphs
  msg="".join(contents)
  if(not datestr in msg):#昨日的日期
    sound(city+'没有最新的疫情信息')
    continue
  else:
    sound(city+"最新疫情信息:")
  if(not '台湾' in msg):
    sound(city+'没有台湾相关的信息')
  for content in contents:
    if content.strip():
      print(content)
      sound(content)

效果
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值