PythonでXMLの要素を抜き出す[RSSからでしょ編]

PythonでXMLの要素を抜き出す
このアプローチでは問題があることに気付いた!

RSS配信されているニュースは、そのXMLをパースして処理した方が確実で効率的。
いちいちニュースサイトのレイアウト解析して、ニュースのリンクのみ抜き出して・・って時代じゃないよね。-;

ということで再チャレンジ!

新アプローチ手順
1.RSSリンクからXMLをminidomに食わせる
2.あとは前回の方法で、必要なデータを抽出する。

[ Sample.py ]

import urllib2
import sys
from xml.dom import minidom, Node

#今回追加した関数
def urlParse(url):
 # リクエストオブジェクトを構築
 req = urllib2.Request(url)
 # リクエストを送信し、レスポンスを読み出すためのファイルライクなオブジェクトを得る
 opener = urllib2.build_opener()
 #minidomに食わせる
 doc = minidom.parse( opener.open(req) )
 #前回の処理を再利用!
 parseNode( doc )


def parseNode(node):
 titleNodes = node.getElementsByTagName('title') 
 linkNodes = node.getElementsByTagName('link')
 if linkNodes.length == titleNodes.length:
  i=0
  while i < linkNodes.length:
   print titleNodes[i].firstChild.data + " : " + linkNodes[i].firstChild.data
   i+=1
 else:
  print "Error!"

if __name__ == '__main__':
 #アサヒ・コムの一般社会ニュースRSS
 urlParse( "http://rss.asahi.com/f/asahi_national" )

[実行結果]

社会 - アサヒ・コム : http://www.asahi.com/
アイヌ古式舞踊、ユネスコ無形文化遺産に : http://rss.asahi.com/click.phdo?i=81b1621b1f10ec1caf60b7aa318fb15f
オリオン電機、115億円所得隠し指摘 金沢国税局 : http://rss.asahi.com/click.phdo?i=df570a0db77c30cb164211c85b9a201c
「痴漢でっちあげ」女に懲役4年求刑 大阪地検 : http://rss.asahi.com/click.phdo?i=bc56d932f9a1cdcee1116c60a190c669
市役所内で男性刺され重傷 埼玉・新座 : http://rss.asahi.com/click.phdo?i=19d20156fa1ca25cddf8239bf1d48e03
 :
 :(ry

受信系のライブラリをimportして、あとはサクッと受信したXMLをminidomへ渡せばOK。
よし、RSSからのデータ受信はできたぞ!^^