ナタリーのマイレポート(http://natalie.mu/my/report)の feed がないので,
rss を生成する script を書いてみた.
Plagger なら MixiScraper のような感じでやればいいんだろうけど,
よくわかっていないので,Ruby ででっちあげてみた.
流れとしては以下のような感じ.
1. WWW::Mechanize でログインして http://natalie.mu/my/report を取得
2. nokogiri と正規表現で適当に切り出し
3. RSS::Maker で rss を生成
1. WWW::Mechanize でログインして http://natalie.mu/my/report を取得
これはよくある WWW::Mechanize の例のとおり.
agent = WWW::Mechanize.new
login_page = agent.get("https://natalie.mu/user/login")
login_form = login_page.forms.first
login_form['nickname'] = "nickname"
login_form['password'] = "password"
agent.submit(login_form)
my_page = agent.get("http://natalie.mu/my/report")
body = my_page.body
2. nokogiri と正規表現で適当に切り出し
1 で取得した body を nokogiri に渡して xpath で切り出し.
30 件表示されるので,"(1..30)"の決めうちでにして,
以下のような感じで取得.
doc = Nokogiri::HTML(body)
(1..30).each do |i|
t = doc.xpath("/html//table/tr[#{i}]/td[1]/p")
end
これで,記事タイトルと概要がとれるので,正規表現でさらに切り出す
(この辺も xpath でなんとかできるの?).
3. RSS::Maker で rss を生成
よくある例のとおり,とりあえず,以下のような感じで.
rss = RSS::Maker.make("2.0") do |maker|
maker.channel.about = ""
maker.channel.title = "natalie my report"
maker.channel.link = "http://natalie.mu/my/report"
maker.channel.description = "natalie my report"
item = maker.items.new_item
item.title = title
item.link = link
item.description = description
end
puts rss.to_s
これを plagger に渡して EntryFullText で全文取得できれば便利なんだけど,
その辺はわからないので,次回に.
Referrer (Inside):
[2009-01-02-4] ナタリー用に Plagger の EFT を書いてみた
comments powered by Disqus
[2009-01-02-4] ナタリー用に Plagger の EFT を書いてみた