Blog の 関連記事表示を実装したいなと思い始めて、
手始めに、markdown 形式の、ファイルからテキスト部のみ抽出する方法を調べていたのですが、
waylan/Python-Markdown: A Python implementation of John Gruber’s Markdown.
などの、markdown ライブラリは、直接テキストを抽出するメソッド等はないみたいで、
BeautifulSoup を使って、HTMLを一旦経由して変換する記事を見つけました。
parsing - Python : How to convert markdown formatted text to text - Stack Overflow
実際実装してみたのですが、
使っている python2.7
と Python 3.5.1
で微妙に書き方や、
ライブラリが違ったので、記載しておきます。
- python2.7
BeautifulSoup
、markdown
、codecs
、HTMLParser
を使って以下のように実装できました。
HTMLParser
は、markdownのテキスト内に、HTML
が含まれると、
エスケープされてしまってたので、その戻しに使用しています。
from BeautifulSoup import BeautifulSoup
from markdown import markdown
import codecs
import HTMLParser
f = codecs.open('your.md,'r','utf-8')
source = f.read()
html = markdown(source)
text = ''.join(BeautifulSoup(html).findAll(text=True))
htmlParser = HTMLParser.HTMLParser()
unescaped_text = htmlParser.unescape(text)
print unescaped_text
- python3
bs4
、markdown
、codecs
、 を使って以下のように実装できました。
理由は定かではないですが、bs4
だと、markdownテキスト内のHTML
は、
エスケープされなかったので、unescape
は、実施しませんでした。
from bs4 import BeautifulSoup
from markdown import markdown
import codecs
f = codecs.open('your.md','r','utf-8')
source = f.read()
html = markdown(source)
text = ''.join(BeautifulSoup(html, 'html.parser').findAll(text=True))
print(text)
関連記事表示の第一段階目の実装はできそうです。
解析の前提のとこですかね。
以上です。
コメント