用python實現自己的小說閱讀器

2021-09-29 00:26:59 字數 3460 閱讀 4810

於是乎,自己動手豐衣足食,接下來就讓我們實現自己的**閱讀器吧。

語音合成選擇建立語音合成應用獲取**內容

**內容的獲取我們從筆趣閣**上獲取,一方面免費,另一方面沒有反爬,找到**首頁使用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 是乙個語音轉換模組,它可以在離線的環境下工作,支援多個引擎...