2008-02-23 21:48:26
今日はXMLを扱えるようになりたい。と思ったのは実は三日前。まだ扱えるようにならないのだ。ElementTreeっていうのが便利だというので、これを試してみた。
import elementtree.ElementTree as ETというようにして使えと書いてあるので、そうしたが、「そんなものはない」という警告が出てしまう。2.5以降は標準装備なんでインストールしなくていいというのは嘘だったのか。でも、インストールしても「そんなものはない」と云われてしまう。
import xml.etree.ElementTree as ETとすれば動くというのが判るのに2日かかった。やれやれ。今はこうするらしい。
新潮社の今月の新刊というRSSの情報を取得してみよう。
#!/usr/bin/python from urllib import urlopen import xml.etree.ElementTree as ET rss = ET.parse(urlopen('http://www.shinchosha.co.jp/feed/syoseki.xml')).getroot() for element in rss.findall("channel/item"): print element.findtext("title") print element.findtext("link")するとこんな内容が表示される。
月のころはさらなり http://www.shinchosha.co.jp/book/306361/ ダンシング・ヴァニティ http://www.shinchosha.co.jp/book/314529/ 魔術はささやく〈新装版〉 http://www.shinchosha.co.jp/book/375004/ 我らが隣人の犯罪〈新装版〉 http://www.shinchosha.co.jp/book/375005/ 頭にちょっと風穴を―洗練された日本人になるために― http://www.shinchosha.co.jp/book/393702/ フェレットの冒険I―海の救助隊― http://www.shinchosha.co.jp/book/505803/ フェレットの冒険II―嵐のなかのパイロット― http://www.shinchosha.co.jp/book/505804/ 予告された殺人の記録/十二の遍歴の物語 http://www.shinchosha.co.jp/book/509013/ そうか、もう君はいないのか http://www.shinchosha.co.jp/book/310817/ 戦後日本経済史 http://www.shinchosha.co.jp/book/603596/ 日本人の愛した色 http://www.shinchosha.co.jp/book/603597/ 朝令暮改の発想―仕事の壁を突破する95の直言― http://www.shinchosha.co.jp/book/306431/ 越境者 松田優作 http://www.shinchosha.co.jp/book/306451/ 異能の画家 伊藤若冲 http://www.shinchosha.co.jp/book/602166/ 豆腐百珍 http://www.shinchosha.co.jp/book/602167/ ぬばたま http://www.shinchosha.co.jp/book/306331/ 雪になる http://www.shinchosha.co.jp/book/425604/ ワンダー・ドッグ http://www.shinchosha.co.jp/book/468002/ エイリアンの地球ライフ―おとなの高機能自閉症/アスペルガー症候群― http://www.shinchosha.co.jp/book/300112/ 太田和彦の居酒屋味酒覧〈第二版〉精選173 http://www.shinchosha.co.jp/book/415805/これはこれでいいのだが、著者名をとるときにはどうすればいいのか。CDATAの中に入っているのだ。descriptionの項全体をとってくるのは簡単なのだが、そこからdiv class='writer'の部分だけ取ってくるのはどうすればいいんだ。
TechnobahnのRSSが何とEUCで書かれているの。そこで、
doc = urlopen('http://www.technobahn.com/rss/science.xml').read() udoc = unicode(doc,"euc-jp").encode("utf-8") tree = ET.parse(udoc)とやってみたら、「ファイル名が長すぎる!」というエラーが出てしまう。udocが中身ではなくファイル名として認識されているようだ。どうすれば中身になるのだろう。