ブログをGoogleのXML形式でバックアップしました。かなり長いです。これまでのところ、私はこれを行いました:
>>> import feedparser
>>> blogxml = feedparser.parse('blog.xml')
>>> type(blogxml)
<class 'feedparser.FeedParserDict'>
私が読んでいる本では、著者はこれを行っています:
>>> import feedparser
>>> llog = feedparser.parse("http://languagelog.ldc.upenn.edu/nll/?feed=atom")
>>> llog['feed']['title'] u'Language Log'
>>> len(llog.entries) 15
>>> post = llog.entries[2]
>>> post.title u"He's My BF"
>>> content = post.content[0].value
>>> content[:70] u'<p>Today I was chatting with three of our visiting graduate students f'
>>> nltk.word_tokenize(nltk.html_clean(content))
そして、それはエントリーごとに私のために働きます。ご覧のとおり、NLTKを使用してHTMLをクリーンアップする方法はすでにあります。しかし、私が本当に望んでいるのは、すべてのエントリを取得し、HTMLを削除して(私はすでに方法を知っていて、方法を尋ねていません。質問をもう少し注意深く読んでください)、ファイルに次のように書き込むことです。プレーンテキスト文字列。これは、feedparserを正しく使用することと関係があります。それを行う簡単な方法はありますか?
アップデート:
結局のところ、私はそれを行う簡単な方法を見つけることにまだ近づいていません。Pythonに不慣れだったため、少し醜いことをしなければなりませんでした。
これは私がやろうと思ったことです:
import feedparser
import nltk
blog = feedparser.parse('myblog.xml')
with open('myblog','w') as outfile:
for itemnumber in range(0, len(blog.entries)):
conts = blog.entries[itemnumber].content
cleanconts = nltk.word_tokenize(nltk.html_clean(conts))
outfile.write(cleanconts)
それで、@ Rob Cowieさん、どうもありがとうございましたが、あなたのバージョン(見栄えが良い)は機能しませんでした。先に指摘しなかったり、答えを受け入れたりするのは気の毒ですが、このプロジェクトに取り組む時間があまりありません。私が下に置いたものは私が仕事に取り掛かることができるすべてです、しかし誰かがもっとエレガントな何かを持っている場合に備えて私はこの質問を開いたままにしておきます。
import feedparser
import sys
blog = feedparser.parse('myblog.xml')
sys.stdout = open('blog','w')
for itemnumber in range(0, len(blog.entries)):
print blog.entries[itemnumber].content
sys.stdout.close()
次に、Pythonのstdoutを閉じずに開いているファイルを閉じる方法がわからなかったため、インタープリターからCtrlキーを押しながらDキーを押しました。次に、インタプリタを再入力し、ファイルを開いてファイルを読み取り、そこからHTMLをクリーンアップしました。(nltk.html_cleanは、NLTKブック自体のオンラインバージョンのタイプミスです...ちなみに、実際にはnltk.clean_htmlです)。私が最終的に得たのは、ほとんど、しかし完全ではない平文でした。