ナタリーのマイレポート(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 を書いてみた