memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

学会Webページをクロールして論文PDFをローカルで読めるようにするRubyスクリプト

ながーい背景

情報処理学会全国大会が今日まで開催されています。久しぶりの全国大会参加です。

www.ipsj.or.jp

一般的にスポーツなんかがそうですが「全国大会」というと地方を勝ち上がった学校や人が参加する大会のように聞こえるようですが、実はそうではなく(←怒られるかなぁ)普通に誰でも参加できる大会になっています。

特に学生は無料で参加できるので発表者でなくても聴講者(要は聞くだけ参加)でも気軽に参加できます。素晴らしいですね。

今回はうちの大学院生が発表だったのですが、論文も2ページしか書かなくてよいため気軽に発表できます。特に研究をはじめた(これからやろうとしている)テーマなどを持ち寄って発表し、その分野の専門家から意見を聞くことができる特徴があります。

また、今回は東京でしたが、その名の通り全国各地で開催されますので、年度末の忙しい時期ではありますが、研究成果を発表するという名目のもとに全国を旅行ができるのも研究するモチベーションの1つかと思います。

で、何が問題なのさ?

この学会では、情報分野の学会なのですが、その中はたくさん分野にわかれています。そうした自分の専門ではないお隣の研究を覗けるのも有意義な学会ではあるのですが、論文集はオンラインで公開されていて、そのページにアクセスする必要があります。

前言のとおり、色々な分野があるため大会プログラム(要はスケジュール表)も膨大な量になっています。これを横断的にみたり、論文PDFにアクセスするのもなかなか大変な作業になります。

また、論文にアクセスするのに認証情報を入力したり、横断的に閲覧することを想定していないためか使いにくかったりします。例えば、僕はVRやARにも関心があるのですが、VRやARを使った研究は様々な分野に点在しています。

だいたい8つの分野にわかれているため、今、VRに関連する研究の発表をやっているか?を調べるには8ページをいったりきたりしなければならないんですね。。。これが面倒。

であれば、ローカルにダウンロードしてそこで検索できたらいいだろうな。。。と発想したわけです。もう大会も終わりに近づいていたのですが。。。そこで大昔、ネット回線が遅かったときに使ったことがあるWebページクロールサービスとか見てみたのですがどれもこれも不十分でした。一番近かったのはDownThemAllという昔使ったことがある拡張機能だったのですが、これは認証つきページに対応していない。。。結局使えない。。。

で、どうしたの?

ChatGPTに聞いてみたら。。。wget、httrackとか使ったらいいよ。。。とのこと。もう自分で作りしかないか。。。ということになったわけです。

で、作ったコードを。。。迷いましたが。。。公開します。認証情報は参加登録した方であれば入手できるはずなのでそれ以外の不正利用はないと思います。サーバー負荷が気になりますが。。。大会が終わってからであればいいのかな。。。ということで。やめろよとかあればお願いします。公開中止します。

コードはRubyの単一ファイルです。読みやすさを考えてモジュール化は一切していません。上から順に読んでいけば処理がわかるようになっています。誰のためでもない将来に使うであろう自分のためです。

gist.github.com

最終的に1,500個くらいのPDFファイルをダウンロードすることになります。実行は気をつけてください。

来週参加予定の学会では、Webページでの公開はもちろん全国大会と同じようにあるのですが、ローカルで読めるようにWebページ全体を圧縮したファイルを公開してくれています。全国大会でもぜひやって欲しいなぁ。。。と思うのですが。。。やらない理由は予稿集を販売しているからなのかなぁ。