python生成有聲小說模擬真人發音


生成有聲小說原理

文字是1500字內的生成微軟文檔說說

用代碼實現小說爬取正本

實現每章小說1450字

實現自動剪切后添加封面

實現自動上傳

用python代碼實現爬取小說,本案列以一本小說為實列代碼

點擊查看代碼
from bs4 import BeautifulSoup
import requests, sys

"""
類說明:下載《筆趣看》網小說《一念永恆》
Parameters:
    無
Returns:
    無
Modify:
"""


class downloader(object):

    def __init__(self):
        self.server = 'http://www.biqukan.com/'
        self.target = 'http://www.biqukan.com/1_1094/'
        self.headers = {
            "User_Agent": "User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36", }
        self.names = []  # 存放章節名
        self.urls = []  # 存放章節鏈接
        self.nums = 0  # 章節數

    """
    函數說明:獲取下載鏈接
    Parameters:
        無
    Returns:
        無
    Modify:
    """

    def get_download_url(self):
        req = requests.get(url=self.target, headers=self.headers)
        html = req.content.decode("gbk")
        div_bf = BeautifulSoup(html, features="lxml")
        div = div_bf.find_all('div', class_='listmain')
        a_bf = BeautifulSoup(str(div[0]), features="lxml")
        a = a_bf.find_all('a')
        self.nums = len(a[15:])  # 剔除不必要的章節,並統計章節數
        for each in a[15:]:
            self.names.append(each.string)
            self.urls.append(self.server + each.get('href'))

    """
    函數說明:獲取章節內容
    Parameters:
        target - 下載連接(string)
    Returns:
        texts - 章節內容(string)
    Modify:
    """

    def get_contents(self, target):
        req = requests.get(url=target, headers=self.headers)
        html = req.content.decode("gbk")
        bf = BeautifulSoup(html, features="lxml")
        texts = bf.find_all('div', class_='showtxt')
        texts = texts[0].text.replace('\xa0' * 8, '\n\n')
        return texts

    """
    函數說明:將爬取的文章內容寫入文件
    Parameters:
        name - 章節名稱(string)
        path - 當前路徑下,小說保存名稱(string)
        text - 章節內容(string)
    Returns:
        無
    Modify
    """

    def writer(self, name, path, text):
        write_flag = True
        with open(path, 'a', encoding='utf-8') as f:
            f.write(name + '\n')
            f.writelines(text)
            f.write('\n\n')


if __name__ == "__main__":
    dl = downloader()
    dl.get_download_url()
    print('《一年永恆》開始下載:')
    for i in range(dl.nums):
        dl.writer(dl.names[i], '一念永恆.txt', dl.get_contents(dl.urls[i]))
        sys.stdout.write("  已下載:%.3f%%" % float(i / dl.nums) + '\r')
        sys.stdout.flush()
    print('《一年永恆》下載完成')
##本文爬取小說因為是單進程,所以下載速度比較忙 ##僅供學習參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM