読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

情報管理誌のRSSから抄録を入手するまで

図書館 Ruby プログラミング

はじめに

先日STI updatesと「情報管理」誌が新着情報のRSS配信を再開されました.
STI updatesと「情報管理」誌が新着情報のRSS配信を再開 | カレントアウェアネス・ポータル

arXiv.orgには抄録の情報もあるのですが,上記の情報管理誌にはなかったので,RSSにあるリンクから抄録とキーワードまでとってきました.もちろん,その気になれば本文もとってこれますが.
arXiv.org e-Print archive

環境

本題

データのURLはこちらです.
http://jipsti.jst.go.jp/atom/journal.xml

RSSの中身を取得するだけならNokogiriで楽に取り出せます
今回欲しい抄録のデータは,RSSに含まれるURLの先のHTMLに記述されているので,RSSの記事のURLもプログラム上で開くことになります.

# coding: utf-8
require 'nokogiri'
require 'open-uri'

url = 'http://jipsti.jst.go.jp/atom/journal.xml'

f = open(url)
xml = Nokogiri::XML(f)
f.close

puts xml.search('title')[0].text # 誌面タイトル
puts xml.search('updated')[0].text # 誌面投稿日時
entrys = xml.search('entry')

entrys.each do |entry|
  puts entry.search('title').text # 記事名

  puts entry.search('name').text # 著者名
  puts link = entry.search('link')[0].values[0] # LINK

  f = open(link)
  html=  Nokogiri::HTML(f)
  f.close

  html.search('.keywords a').each do |keyword|
    puts keyword.text
  end

  abst = html.search('.mod-section  p.normal').text # abstract
  puts abst.gsub(/\r\n/, '')

end

このコードだとhttpからhttpsにリダイレクトされる際に

open_loop': redirection forbidden: http://dx.doi.org/10.1241/johokanri.58.83 -> https://www.jstage.jst.go.jp/article/johokanri/58/2/58_83/_article/-char/ja/ (RuntimeError)

というエラーがでるため,'open_uri_redirections'というgemを使って対処します.

# coding: utf-8
require 'nokogiri'
require 'open-uri'
require 'open_uri_redirections'

url = 'http://jipsti.jst.go.jp/atom/journal.xml'

f = open(url)
xml = Nokogiri::XML(f)
f.close

puts xml.search('title')[0].text # 誌面タイトル
puts xml.search('updated')[0].text # 誌面投稿日時
entrys = xml.search('entry')

entrys.each do |entry|
  puts entry.search('title').text # 記事名

  puts entry.search('name').text # 著者名
  puts link = entry.search('link')[0].values[0] # LINK

  f = open(link, :allow_redirections => :safe)
  html=  Nokogiri::HTML(f)
  f.close

  html.search('.keywords a').each do |keyword|
    puts keyword.text
  end

  abst = html.search('.mod-section  p.normal').text # abstract
  puts abst.gsub(/\r\n/, '')

end


結果

月刊誌「情報管理」 2015年5月号
2015-05-02T00:00:02+09:00
京都大学URAネットワークにおける研究資金獲得支援 情報の収集・提供・分析
天野 絵里子, 岡野 恵子, 稲石 奈津子, 今井 敬吾
http://dx.doi.org/10.1241/johokanri.58.83
リサーチ・アドミニストレーター, URA
研究推進
研究資金獲得支援
学内連携
学内情報共有
京都大学
(直に抄録を載せていいのか判断に迷ったため省略しますが,ここに抄録があるものは出力されます)

というようになります.

楽しいことが思いついたらこのデータを使って何かしてみようと思います.