您好,登錄后才能下訂單哦!
使用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幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
關于使用python怎么抓取網頁內容并進行語音播報問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。