欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python抓取網頁內容并進行語音播報的方法

 更新時間:2018年12月24日 10:35:13   作者:jupeizhong  
今天小編就為大家分享一篇python抓取網頁內容并進行語音播報的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python2.7,下面是跑在window上的,稍作修改就可以跑在linux上。

實測win7和raspbian均可,且raspbian可以直接調用omxplayer命令進行播放。

利用百度的語音合成api進行語音播報,抓取的頁面是北大未名BBS的十大。

先放抓取模塊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 =======================
>>>
化學與分子工程學院 版 不喜歡做實驗怎么辦
三角地 版 烈士旅正在對對研究生會實施最高軍事占領的
十六周年站慶 版 ★★畢業(yè)季 | 未名BBS歷年紀念品特賣會★★
遺跡保衛(wèi) 版 母校兩日游,想借個飯卡
別問我是誰 版 遇到性騷擾,打電話跟男朋友傾訴……
美食天地 版 請問北大附近哪里有好吃的餃子
男孩子 版 ,萬念俱灰!
鵲橋 版 醫(yī)生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

其中token是由程序生成的。

以上這篇python抓取網頁內容并進行語音播報的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python編程實現使用線性回歸預測數據

    Python編程實現使用線性回歸預測數據

    這篇文章主要介紹了Python編程實現使用線性回歸預測數據,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 利用python實現逐步回歸

    利用python實現逐步回歸

    今天小編就為大家分享一篇利用python實現逐步回歸,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python實現獲取亂序列表排序后的新下標的示例

    Python實現獲取亂序列表排序后的新下標的示例

    本文主要介紹了Python實現獲取亂序列表排序后的新下標的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Python對字符串實現去重操作的方法示例

    Python對字符串實現去重操作的方法示例

    字符串去重是python中字符串操作常見的一個需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關于Python對字符串實現去重操作的相關資料,文中給出了詳細的介紹,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 詳解Python3 定義一個跨越多行的字符串的多種方法

    詳解Python3 定義一個跨越多行的字符串的多種方法

    這篇文章主要介紹了詳解Python3 定義一個跨越多行的字符串的多種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python異步發(fā)送日志到遠程服務器詳情

    Python異步發(fā)送日志到遠程服務器詳情

    這篇文章主要介紹了Python異步發(fā)送日志到遠程服務器詳情,文章通過簡單輸出到cmd和文件中的代碼展開詳情,需要的朋友可以參考一下
    2022-07-07
  • python基礎教程之基本內置數據類型介紹

    python基礎教程之基本內置數據類型介紹

    在Python程序中,每個數據都是對像,每個對像都有自己的一個類型。不同類型有不同的操作方法,使用內置數據類型獨有的操作方法,可以更快的完成很多工作
    2014-02-02
  • python中閉包Closure函數作為返回值的方法示例

    python中閉包Closure函數作為返回值的方法示例

    閉包(closure)是函數式編程的重要的語法結構,Python也支持這一特性,下面這篇文章主要給大家介紹了關于python中閉包Closure函數作為返回值的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • Python搭建代理IP池實現存儲IP的方法

    Python搭建代理IP池實現存儲IP的方法

    這篇文章主要介紹了Python搭建代理IP池實現存儲IP的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 優(yōu)化Python代碼使其加快作用域內的查找

    優(yōu)化Python代碼使其加快作用域內的查找

    這篇文章主要介紹了優(yōu)化Python代碼使其加快作用域內的搜索,文中介紹了CPython相關的C代碼來對查找功能進行優(yōu)化,加快搜索的速度,需要的朋友可以參考下
    2015-03-03

最新評論