Python實現網頁自動化朗讀

2021-09-11 12:27:44 字數 2187 閱讀 1278

是不是有的時候懶得自己看新聞?那麼不妨試試用 python 來朗讀給你聽吧。

網頁轉換成語音,步驟無外乎:

網頁正文識別,獲取到正文的文字內容;

文字轉語音,通過介面將文字轉換成語音檔案;

語音檔案的發聲,即將語音檔案讀出;

01:網頁正文識別

之所以用 python,就是因為 python 有著豐富的庫,網頁正文識別也不在話下。這裡我嘗試了 readability、goose3。

1.1 readability

readability 支援 python3,使用 pip install readability-lxml 安裝即可。

readability 使用起來也很方便:

import requests

from readability import document

response = requests.get(『

doc = document(response.text)

print(doc.title())

但是 readability 提取到的正文內容不是文字,裡面仍包含 html 標籤。

當然也可以結合其他元件再對 html 進行處理,如 html2text,我們這裡就不再延伸,有興趣的可以自行嘗試。

1.2 goose3

使用起來也很方便,同時對中文支援也不錯。使用 pip install goose3 即可安裝。

from goose3 import goose

from goose3.text import stopwordschinese

url = 『

g = goose()

article = g.extract(url=url)

print(article.cleaned_text[:150])

北京時間6月15日23:00(聖彼得堡當地時間18:00),2023年世界盃b組一場比賽在聖彼得堡球場展開角逐,伊朗1比0險勝摩洛哥,伊朗前鋒阿茲蒙半場結束前錯過單刀機會,鮑哈杜茲第95分鐘自擺烏

龍。這是伊朗20年來首度在世界盃決賽圈取勝。

本屆世界盃,既相繼出現替補便進球,貼補梅開二度以及東道主

可以看出網頁正文提取效果還不錯,基本滿足我們的要求,可以使用!

注意:goose 還有另外乙個 python2 的版本:python-goose,使用方法和 goose3 基本一樣。

02:文字轉語音

2.1 baidu-aip 的使用

使用示例如下:

if not isinstance(result, dict):

with open(『auido.***』, 『wb』) as f:

f.write(result)

介面引數:

介面對單次傳入的文字進行了限制,合成文字長度必須小於 1024 位元組,如果文字長度過長,就需要進行切割處理,採用多次請求的方式,分別轉換成語音檔案,最後再將多個語音檔案合併成乙個。

2.2 文字切割

可以使用如下**將文字分割成多個長度為 500 的文字列表

text_list = [text[i:i+500] for i in range(0, len(text), 500)]

2.3 語言檔案合併

我們使用 pydub 來處理生成的音訊檔案。使用 pip install pydub 即可安裝。

若還有問題,可以參考官網配置:

def merge_voice(file_list):

voice_dict = {}

song = none

for i,f in enumerate(file_list):

if i == 0:

song = audiosegment.from_file(f,「***」)

else:

song += audiosegment.from_file(f,「***」)

os.unlink(f)

使用 pip install playsound 安裝後即可使用。

使用也很簡單:

python page2voice.py -u 「

執行後,**就會自動解析網頁並進行朗讀啦。

04:總結

至此,網頁到音訊的轉換就結束了。當然程式沒有這麼完美,比如中英文混合的網頁解析和轉換的結果就不怎麼理想,但是純中文的新聞頁面效果還是不錯的。原始碼已上傳至 github:

python實現自動化列印

這次真的是出於實際需要,想要用python寫個小指令碼 老闆發給我乙份包含幾百個人資訊的pdf檔案,如果乙份乙份開啟檔案,點列印我感覺要看到眼花。發現呼叫電腦程式需要用到win32這個庫,而且初略的看了下就發現此庫非常nb,怎麼說,這個庫可以同計算機進行互動,比如彈出提示框,或者呼叫系統內建一些程式...

python實現介面自動化(1)

http簡介 http協議是什麼呢,是乙個基於 請求 與 響應 模式的,無狀態,應用層的協議 url詳解 http https 為兩種協議型別,第一種為不加密的,第二種加密的 www.baidu.com 稱為主機位址或者網域名稱 192.168.1.1 8080 位址加埠號 localhost808...

利用Python實現報表自動化

匯入源資料 import pandas as pd from datetime import datetime data pd.read csv r users faye desktop order 14.1.csv parse dates 成交時間 parse dates將資料解析為時間格式 da...