主要思路:
1、获取热搜页面的返回数据
2、筛选热搜页面中的热搜名称、排行等信息
3、百度语音播报
微博热搜页面:https://s.weibo.com/top/summary
这个页面不需要用户登录,就能获取页面数据,所以我们不需要考虑登录时获取token的问题,这个下次会单独做个视频讲解。
获取微博热搜内容:
(由于语音识别只能支持1024个字节,所以我只爬取了前十的排行榜)
代码语言:javascript复制url = 'https://s.weibo.com/top/summary'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
def get_text():
list = []
response = requests.get(url=url, headers=header)
if response.status_code == 200: #判断接口请求是否正确
html = etree.HTML(requests.get(url, headers=header).text) # 构造XPath解析对象
hot_search_name = html.xpath('//td[@class="td-02"]/a/text()') # 热搜名 字符串列表
hot_search_rank = html.xpath('//td[@class="td-01 ranktop"]/text()') # 热搜排行
hot_search_name_true = hot_search_name[1:] # 只取热搜排行,不取置顶热搜
for i in range(0, 10):
s = '第' hot_search_rank[i] '名' hot_search_name_true[i] # 排行和热搜组合
list.append(s)
else:
print('wrong')
result = ''.join(list) # list转str
return result
百度语音API地址:https://ai.baidu.com/ai-doc/SPEECH/Gk4nlz8tc
使用方法:创建百度账号->添加应用->获取id、key和secret_key,具体可以参考下面这篇文章,有讲过如何创建应用 【巧用校验码】
百度语音识别
代码语言:javascript复制APP_ID = '19942258'
API_KEY = 'XXX'
SECRET_KEY = 'XXX'
def speech():
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(get_text(), 'zh', 1, {
'vol': 5, #音量
'per': 0, # 发音人选择
'pit': 7, # 音调
'spd': 4 # 语速
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
代码很简单,有空的可以尝试下,挺好玩的。最后给大家贴一下我爬取后的音频。