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にも置いております。よろしければご活用ください。