我想将epub转换为txt。我首先通过zipfile将epub转换为xhtml。然后我尝试通过beautifulsoup将xhtml转换为epub。
但是,由于本地文件名,因此出现问题。例如,MY xhtml文件名是“ C:\ Users \ abc.xhtml”,而不是“ HTTPS”。因此beautifulsoup无法正常工作。
我该如何解决?
'''
import zipfile
zf = zipfile.ZipFile('C:\\Users\\abc.epub')
zf.extractall('C:\\Users\\Desktop\\folder')
'''
import re, requests
from bs4 import BeautifulSoup
html = "C:\\Users\\abc.xhtml"
soup = BeautifulSoup(html, 'lxml')
print(soup.text)
BeautifulSoup
构造函数需要html文件而不是url的实际内容。试试这个:
with open(html) as f:
contents = f.read()
soup = BeautifulSoupd(contents, 'lxml')
您不需要BeautifulSoup进行提取。
您可以使用epub-conversion
包将.epub文件转换为文本,可从PyPi安装:
pip install epub-conversion
现在,从epub存档中提取文本是一个简单的任务:
from epub_conversion.utils import open_book, convert_epub_to_lines
book = open_book("some_file.epub")
lines = convert_epub_to_lines(book)
现在,正如您所提的问题,您可以将其整体打印或选择处理每一行:
print(lines)
# or traverse each line
for line in lines:
print(line) # Or do something completely different