stMind

You'll never blog alone

BMVC2010の論文PDFをダウンロードするスクリプトを書いた

BMVC 2010 Papersの論文PDFをダウンロードするスクリプトを書きました。実行すると、論文毎のページにアクセスして、論文名.pdfの形式で保存します。全部ダウンロードするのに大体10分くらいかかります。

#! /usr/bin/perl

use warnings;
use strict;

use URI;
use Web::Scraper;
use LWP::UserAgent;

## 全論文のPDFページのURLを取得
my $papers = scraper {
    process "ol", "sessions[]" => scraper {
        process "li", "papers[]" => scraper {
            process "a", title => 'TEXT';
            process "a", link => '@href';
            process "a", id => '@name';
        };
    };
};
my $res = $papers->scrape( URI->new('http://bmvc10.dcs.aber.ac.uk/proc/conference/') );

## 個別の論文のPDFページからPDF本体のURLを取得
my $pdfs = scraper {
    process "//tr[3]//a[1]", pdf => '@href';
    process "//tr[3]//a[2]", abst => '@href';
};

## PDFをダウンロード
my $res2;
my $ua = LWP::UserAgent->new;
for my $session (@{ $res->{sessions} }) {
    for my $paper (@{ $session->{papers} }) {
        # 各PDFページをスクレイピング
        $res2 = $pdfs->scrape( URI->new($paper->{link}) );

        # 論文タイトルをファイル名にして保存
        my $filename = $paper->{title} . ".pdf";
        $ua->get( $res2->{pdf}, ':content_file' => $filename );

        # 確認
        print $filename . "\n";
        print "\t" . $res2->{pdf} . "\n";
        print "\t" . $res2->{abst} . "\n";
    }
}

スクリプトはgist: 598048 - GitHubにも置いております。よろしければご活用ください。