oneshotlife-pythonのブログ

Pythonを好んで使っているプログラマです。Pythonこそが最強のプログラミング言語だと思っています。Pythonは使いやすいです。Pythonは書きやすいです。Pythonは読みやすいです。Pythonはパワフルです。Pythonは一貫性があります。Pythonが好きです。

アメブロのRSSを解析する #Python #feedparser

環境

$ipython
Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1.rc2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

rssfeedを取得する

feedparserをimport

他にもやり方はいろいろあるだろうけど、有名どころのfeedparserを使ってみた

>>> import feedparser

feedparserの属性を表示してみる

それなりに大きなモジュールだということがわかる・・・。

feedparser.ACCEPTABLE_URI_SCHEMES
feedparser.ACCEPT_HEADER
feedparser.BeautifulSoup
feedparser.CharacterEncodingOverride
feedparser.CharacterEncodingUnknown
feedparser.EndBracketMatch
feedparser.FeedParserDict
feedparser.NonXMLContentType
feedparser.PARSE_MICROFORMATS
feedparser.PREFERRED_TIDY_INTERFACES
feedparser.PREFERRED_XML_PARSERS
feedparser.RESOLVE_RELATIVE_URIS
feedparser.SANITIZE_HTML
feedparser.SUPPORTED_VERSIONS
feedparser.TIDY_MARKUP
feedparser.ThingsNobodyCaresAboutButMe
feedparser.USER_AGENT
feedparser.UndeclaredNamespace
feedparser.attrfind
feedparser.base64
feedparser.binascii
feedparser.cgi
feedparser.chardet
feedparser.charref
feedparser.codecs
feedparser.codepoint2name
feedparser.copy
feedparser.datetime
feedparser.endbracket
feedparser.entitydefs
feedparser.entityref
feedparser.gzip
feedparser.incomplete
feedparser.interesting
feedparser.name2codepoint
feedparser.parse
feedparser.re
feedparser.registerDateHandler
feedparser.rfc822
feedparser.sgmllib
feedparser.shorttag
feedparser.shorttagopen
feedparser.starttagopen
feedparser.string
feedparser.struct
feedparser.tagfind
feedparser.time
feedparser.types
feedparser.urllib
feedparser.urllib2
feedparser.urlparse
feedparser.warnings
feedparser.xml
feedparser.zlib

rssfeedをparseする

parseというのは、ある形式で掛かれた文書を解析すること。特に、その言語で扱うデータ型に落とし込むことを言うことのようだ。(主観も入っているが。)
今回は、私が運営しているアメブロの以下のファイルをparseしてみることにした。
http://rssblog.ameba.jp/one-shotlife/rss20.xml

>>> feed = feedparser.parse("http://rssblog.ameba.jp/one-shotlife/rss20.xml")

これで、指定したファイルをparse下オブジェクトが返却され、feedに格納される。型を気にしなくてもいいところがPythonの良いところ。

ちなみにfeedの型は、feedparser.FeedParserDictっていうクラスらしい。が、Pythonインタラクティブ環境でプログラムしているときは、気にしなくてもいいと思う。

>>> type(feed)
<class 'feedparser.FeedParserDict'>

feedの属性を表示する

feedは以下の属性を持っている。使い方はわからないまでも、いろいろ動かしてみれば、動作がわかる。ただ、clearとか、popとか、元のデータを破棄してしまいそうなものの扱いには注意。そういうのは最後にやること。

feed.clear       feed.items       feed.keys        feed.values
feed.copy        feed.iteritems   feed.pop         feed.viewitems
feed.fromkeys    feed.iterkeys    feed.popitem     feed.viewkeys
feed.get         feed.itervalues  feed.setdefault  feed.viewvalues
feed.has_key     feed.keymap      feed.update    

feed.keymap

feedはかなりビッグなデータを扱っているので、一番最初にkeymapでどんなkeyがあるのかを見てみるといいと思う。

>>> for index,element in enumerate(feed.keymap,start=1):
    print str(index).rjust(2)," ",element
...     
 1   modified_parsed
 2   description
 3   copyright
 4   date_parsed
 5   url
 6   items
 7   tagline
 8   modified
 9   copyright_detail
10   issued_parsed
11   description_detail
12   issued
13   date
14   tagline_detail
15   guid
16   channel

上記から、今回は例としてentriesを表示してみる。

>>> for e in feed['entries']:
...     print e['title']
...  
アメブロアクセス解析でリンク元URLを見る。
なうでつぶやくだけでアクセス数アップ!
この記事は表示できません
新年明けましておめでとうございます。今年もてきとうによろしくお願いします。
PR: 大手・注目の広告・Web会社の転職はマスメディアン
サイドバ-ブックマーク管理
PR: なぜ今までなかったの?新しい資産運用方法できました。
インデックス数が247件ですってよ!
アメブロにメール投稿する。
PR: チャージのいらない電子マネー、QUICPay
メールからアメブロに投稿してみた。
アメブロの読者登録をおねだり。
Firebugでh1,h2,h3タグなどの要素を調査する。

アメーバってRSSに広告入れているんだよな・・・。

  • PR: 大手・注目の広告・Web会社の転職はマスメディアン
  • PR: なぜ今までなかったの?新しい資産運用方法できました。
  • PR: チャージのいらない電子マネー、QUICPay

この三つは自分で書いた記事ではない。

Programming Python

Programming Python