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ではタイムスタンプと云っていたように思う)。困ったな。