温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用python怎么抓取网页内容并进行语音播报

发布时间:2021-05-20 16:30:18 来源:亿速云 阅读:248 作者:Leah 栏目:开发技术

使用python怎么抓取网页内容并进行语音播报?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

先放抓取模块BDWM.py的代码:

# -*- coding: utf-8 -*- import urllib2 import HTMLParser   class MyParser(HTMLParser.HTMLParser):  def __init__(self):  HTMLParser.HTMLParser.__init__(self)   self.nowtag = ''  self.count = 0  self.flag = False  self.isLink = False  self.count2 = 0  self.dict = {}  self.temp = ''  def handle_starttag(self, tag, attrs):  if tag == 'span':   for key, value in attrs:   if key == 'class' and ('Rank1AmongHisBoard' in value):    self.count += 1    if self.count < 11:    self.flag = True  if tag == 'a':   self.isLink = True  else:   self.isLink = False  def handle_data(self, data):  if self.flag and self.isLink:   self.count2 += 1   if self.count2 == 1:   self.temp = data   if self.count2 == 3:   self.flag = False   self.count2 = 0   self.dict[self.temp] = data    res = urllib2.urlopen('https://www.bdwm.net/bbs/main0.php') my = MyParser() my.feed(res.read().decode("gbk")) result = '' str = " 版 " str = str.decode('utf8') for i in my.dict:  result += i + str + my.dict[i] + '\n' print result

F5运行,抓取结果如下:

>>> ======================= RESTART =======================
>>>
化学与分子工程学院 版 不喜欢做实验怎么办
三角地 版 烈士旅正在对对研究生会实施最高军事占领的
十六周年站庆 版 ★★毕业季 | 未名BBS历年纪念品特卖会★★
遗迹保卫 版 母校两日游,想借个饭卡
别问我是谁 版 遇到性骚扰,打电话跟男朋友倾诉……
美食天地 版 请问北大附近哪里有好吃的饺子
男孩子 版 被戴绿帽,万念俱灰!
鹊桥 版 医生mm征GG(#征男友#代征)
谈情说爱 版 # 感觉身边都是嘴上急着脱光但心里不急的人 #
北京大学研究生会 版 农园一层和自称“常代会”的占座女吵起来了(转载)(转载)

可以看到我们成功抓取到了未名BBS十大的版面信息与标题。

下面放语音播报模块,也是整个程序的入口:

# -*- coding: utf-8 -*- ''' Author  : Peizhong Ju Latest Update : 2016/4/21 Function : Use Baidu Voice API to speak ''' import urllib, urllib2 import json import ConfigParser import BDWM   config = ConfigParser.ConfigParser() config.readfp(open('config.ini')) TOKEN = config.get('Baidu', 'token') local = config.get('Dir', 'mp3') words = ''   def GetVoice():  text = urllib.quote(words)  url = 'http://tsn.baidu.com/text2audio?tex=' + text + '&cuid=b888e32e868c&lan=zh&ctp=1&tok=' + TOKEN  rep = urllib.urlretrieve(url, local)  CheckError()   def GetAccessToken():  client_id = config.get('Baidu', 'client_id')  client_secret = config.get('Baidu', 'client_secret')  rep = urllib2.urlopen('https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret)  hjson = json.loads(rep.read())  return hjson['access_token']   def CheckError():  global TOKEN  file_object = open(local)  try:   all_the_text = file_object.read()   if (all_the_text[0] == '{'):   hjson = json.loads(all_the_text)   #print hjson['err_no']   if (hjson['err_no'] == 502):    print 'Getting new access token...'    TOKEN = GetAccessToken()    config.set('Baidu', 'token', TOKEN)    config.write(open('config.ini', "r+"))    GetVoice()   else:    print all_the_text   else:   print '[success] ' + words  finally:   file_object.close()   try:  words = BDWM.result.encode('utf8')  GetVoice()  # use other software to play it except Exception as e:  print "ERROR!"  print e

当中我们用到了config文件,便于记录和修改,格式如下:

[Baidu] client_id = HWWuh7dee6EBSAvzrOGaGNvX client_secret = G3PwLHC5aCN2TQn3GcYjhn3BmH6xgxtR token = 24.533d59e6554d133ea6bf02125bc6fa30.2592000.1463760851.282335-5802050   [Dir] mp3 = C:\Users\jupeizhong\Desktop\python2\baiduVoice\hello.mp3

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

关于使用python怎么抓取网页内容并进行语音播报问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI