epub 形式のファイルから本文のテキストを抽出する方法のメモ。
epub 形式のファイルでは、本文が p タグに記述されているため、p タグ内のテキストを抽出します。
ただし、ruby タグなど他のタグが含まれる場合があるため、不要なタグを除去する必要があります。
epub 形式のファイルでは、本文が p タグに記述されているため、p タグ内のテキストを抽出します。
ただし、ruby タグなど他のタグが含まれる場合があるため、不要なタグを除去する必要があります。
import lxml.etree import ebooklib from ebooklib import epub def remove_tag(elem): text = lxml.etree.tostring(elem, encoding='utf-8').decode('utf-8') text = re.sub('(?:|)','', text) text = re.sub('<.*?>', '', text) return text epub_path = "{epubファイル}" book = epub.read_epub(epub_path) for item in book.get_items_of_type(ebooklib.ITEM_DOCUMENT): dom = lxml.html.fromstring(item.get_content()) text_nodes = dom.xpath("//p") for text_node in text_nodes: text = remove_tag(text_node) print(text)