2008-02-24 18:08:59
昨日、中身ではなくファイル名となってしまうと書いていたところは、
tree = ET.fromstring(udoc)と書けばいいだけだった。しかし、このTechnobahnのRSSでは、エラーが出てしまう。形が許されないとかなんとか。この書き方で他のRSSは読み込めたので、Technobahnの書き方が悪いのだろう。仕方がないので、テキストを分解していって取得してみる。リンク先の本文も。第一段落目をSummaryとして別に切りだしている。
#!/usr/bin/python # vim: set fileencoding=utf-8 : import re from urllib import urlopen import xml.etree.ElementTree as ET def honmon(link): doc = urlopen(link).read() udoc = unicode(doc,"euc-jp").encode("utf-8") strt = udoc.index('【Technobahn') stop = udoc.index('<font size=2>',strt) ftext = udoc[strt:stop] ftext = re.sub('【.+?】','',ftext) ftext = re.sub('<.+?>','',ftext) brbr = udoc.index('<br><br>',strt) summary = udoc[strt:brbr] summary = re.sub('【.+?】','',summary) summary = re.sub('<.+?>','',summary) return [summary,ftext] doc = urlopen('http://www.technobahn.com/rss/science.xml').read() udoc = unicode(doc,"euc-jp").encode("utf-8") strt = udoc.index('</channel>') stop = udoc.index('</rdf:RDF>') body = udoc[strt+len('</channel>'):stop] body = re.sub('^\n','',body) items = body.split('</item>\n') items.pop() for item in items: values = item.split('\n') title = re.sub('<.+?>','',values[1]) link = re.sub('<.+?>','',values[2]) ptime = re.sub('<.+?>','',values[5]) print title print link print ptime texts = honmon(link) print texts[0]こんなかんじで、
1セント硬貨が10億円に変身、18世紀の貴重な硬貨301枚がオークションに http://www.technobahn.com/news/2008/200802190539.html 2008-02-19T05:39:00+0900 「1セントに笑うものは1セントに泣く」ということわざもあるが、今から 約200年前の米1セント硬貨、合計301枚が15日、米国内でオークションに 掛けられて落札金額の合計は1007万ドル(約11億円)にも及んだ。ずらずらと書き出されてくる(記事全文は表示させていない)。この時刻を、エポックタイムからの秒数に変換したいのだが、どうしたらいいのか判らない(PHPではタイムスタンプと云っていたように思う)。困ったな。