【问题标题】:I need an epub to text solution in Python我需要一个 epub 到 Python 中的文本解决方案
【发布时间】:2019-03-15 10:25:49
【问题描述】:

我需要从 epub 获取文本

from epub_conversion.utils import open_book, convert_epub_to_lines

f = open("demofile.txt", "a")
book = open_book("razvansividra.epub")
lines = convert_epub_to_lines(book)

我使用它,但如果我使用 print(lines),它只会打印一行。图书馆已有6年历史。大家知道什么好方法吗?

【问题讨论】:

    标签: python epub


    【解决方案1】:

    https://github.com/aerkalov/ebooklib

    EbookLib 是一个 Python 库,用于管理 EPUB2/EPUB3 和 Kindle 文件。它能够以编程方式读写 EPUB 文件 (Kindle 支持正在开发中)。

    API 旨在尽可能简单,同时 时间也让复杂的事情成为可能。它支持封面, 目录、书脊、指南、元数据等。

    import ebooklib
    from ebooklib import epub
    
    book = epub.read_epub('test.epub')
    
    for doc in book.get_items_of_type(ebooklib.ITEM_DOCUMENT):
        print doc
    

    【讨论】:

    • 如我所见,我找不到获取文本的方法,只能获取图像等。
    • 现在,我得到了这种格式 现在,我得到了得到这种格式 而且根本没有文字
    • @Adrian 你可以使用 doc.content 来访问文本
    【解决方案2】:

    convert_epub_to_lines 返回一个指向行的迭代器,需要逐个迭代才能得到。

    相反,您可以使用“convert”获取所有行,请参阅库的文档:

    https://pypi.org/project/epub-conversion/

    【讨论】:

    • 图书馆不再维护!
    • 出现错误,ModuleNotFoundError: No module named 'xml_cleaner'
    • @ScipioAfricanus 您可以通过使用pip install xml_cleaner 安装它来解决此错误
    【解决方案3】:

    Epublib 有修改你的 epub 元数据的问题,所以如果你想要原始文件可能只改变了一些东西,你可以简单地将 epub 解压到一个目录中,然后用 Beautifulsoup 解析它:

    from os import path, listdir
    
    with ZipFile(FILE_NAME, "r") as zip_ref:
        zip_ref.extractall(extract_dir)
    
    for filename in listdir(extract_dir):
        if filename.endswith(".xhtml"): 
            print(filename)
            with open(path.join(extract_dir, filename), "r", encoding="utf-8") as f:
                soup = BeautifulSoup(f.read(), "lxml")
                for text_object in soup.find_all(text=True):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2016-03-31
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多