自己做了一个功能,自动去卫健委网站获取最新疫情信息,并通过语音播报,很有意思。
需要两个文件 一个是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)
效果