於是乎,自己動手豐衣足食,接下來就讓我們實現自己的**閱讀器吧。
語音合成選擇建立語音合成應用獲取**內容
**內容的獲取我們從筆趣閣**上獲取,一方面免費,另一方面沒有反爬,找到**首頁使用requests**就可以了。簡單分析一下頁面
所有章節資訊都在dd元素下,而且鏈結也是很有規律的,直接用xpath獲取所有章節列表資訊。
'''
'''def
get_chapters
(self)
: url =
""r = self.session.get(url)
r.encoding = chardet.detect(r.content)
.get(
"encoding"
,"utf-8"
) html = etree.html(r.text)
for item in html.xpath(
"//dl/dd/a"):
yield item.attrib[
"title"
], url + item.attrib[
"href"
]
章節內容獲取也非常簡單,就不分析了
def
get_content
(self, url)
: r = self.session.get(url)
r.encoding = chardet.detect(r.content)
.get(
"encoding"
,"utf-8"
) html = etree.html(r.text)
title = html.xpath(r'//*[@class="bookname"]/h1')[
0].text
for info in html.xpath(
"//div[@id='content']"):
text = info.xpath(
"string(.)"
)
這裡有一點要注意的,獲取的章節內容中有html元素,xpath為我們提供了string(.),提取多個子節點的文字,非常好用。
合成儲存
'''
'''import chardet
import requests
from lxml import etree
from aip import aipspeech
class
collectnovels
:def
__init__
(self)
: self.session = requests.session(
) self.session.headers[
"user-agent"]=
'16416498'
api_key =
'oewgafqkaugqmsmpbfke5omx'
secret_key =
'6jdsuch0pxz5tyoelu47u58w5vpv9lwf'
defget_chapters
(self, url)
: r = self.session.get(url)
r.encoding = chardet.detect(r.content)
.get(
"encoding"
,"utf-8"
) html = etree.html(r.text)
for item in html.xpath(
"//dl/dd/a"):
yield item.attrib[
"title"
], url + item.attrib[
"href"
]def
get_content
(self, url)
: r = self.session.get(url)
r.encoding = chardet.detect(r.content)
.get(
"encoding"
,"utf-8"
) html = etree.html(r.text)
for info in html.xpath(
"//div[@id='content']"):
text = info.xpath(
"string(.)"
)for line in text.split(
"。")
: content = self.client.synthesis(line,
'zh',1
,)with
open
("auido.***"
,"rb"
)as fp:
fp.write(content)
if __name__ ==
'__main__'
: novel = collectnovels(
) home_url =
""for title, url in novel.get_chapters(home_url)
: novel.get_content(url)
我們可以使用python的pygame庫,其他的好幾個庫都不太好用,有些已經年久失修了,所以就不用了。
import time
import pygame
from io import bytesio
pygame_mixer = pygame.mixer
pygame_mixer.init(frequency=frequency)
byte_obj = bytesio(
)byte_obj.write(content)
byte_obj.seek(0,
0)pygame_mixer.music.load(byte_obj)
pygame_mixer.music.play(
)while pygame_mixer.music.get_busy():
time.sleep(
0.1)
pygame_mixer.stop(
)
最終處理要生成我們最終可以使用的閱讀器還有幾個問題需要處理。
每次合成如果不進行儲存,下一次就必須要重新合成。所以我們使用資料庫儲存合成的語音。
後期規劃
用python爬個小說
上下班,地鐵間,用手機在各類 看 時,總會有莫名其妙的彈窗,是不是很煩惱。其實我們可以借助python寫個小工具,將想看的 爬下來。我們可以通過bp 瀏覽器f12也可以,不過不如bp直觀 看一下輸入目錄頁的url之後會看到什麼資訊 該結果是乙個json格式,其中欄位chaptername代表章節名稱...
go自己實現的《餘罪》小說爬蟲
最近在看go的東西,看了官方的教程,看書看不下去。想著還是通過實踐來學習吧,於是決定寫個小專案。之前python入門就是用的爬蟲,這次也想這麼幹。看了別人的 很多用第三方的 覺得不好,決定自己實現。發現go很適合自己造輪子,其實自己造輪子學到的更多,不是嗎?1 採用生產者 消費者模型。生產者解析章節...
Python模組 製作屬於自己的有聲小說
python版本 anaconda3 python3.7.4 作業系統 ubuntu19.10 編譯器 pycharm社群版 用到的模組 pyttsx3,requests pyttsx3官網位址 pyttsx3 text to speech 是乙個語音轉換模組,它可以在離線的環境下工作,支援多個引擎...