scraperを使用して、タイトルとURLを抽出してCSV出力する汎用perlスクリプト
Nid: 99
指定した URL からタイトルとURLリンクを抽出し、CSV形式で出力するperlスクリプトです。
$ cat getLinks.pl #!/usr/bin/perl use strict; use Web::Scraper; use URI; use Encode; use Text::CSV_XS; use JSON; use utf8; # to use japanese in the code my $delimiter = ","; my $myurl = "" . $ARGV[0]; my $uri = URI->new($myurl); #my $uri = URI->new("file:$myurl"); my $scraper = scraper { process '//a', 'list[]' => { 'title' => 'TEXT', 'link' => '@href' }; }; my $result = $scraper->scrape($uri); my @f_name= qw/ title link /; print join($delimiter, @f_name), "\n"; my $csv = Text::CSV_XS->new({ 'quote_char' => '', 'escape_char' => '"', 'sep_char' => $delimiter, 'binary' => 1 }); for my $i (@{$result->{list}}) { my @record; for ( my $j=0; $j<=$#f_name; $j++ ){ push (@record, $i->{$f_name[$j]}); } $csv->combine(@record); print encode('utf-8',$csv->string()), "\n"; }
ポイントは、"scraper { process ..." の部分だけ。
my $scraper = scraper { process '//a', 'list[]' => { 'title' => 'TEXT', 'link' => '@href' }; };
キーがCSVヘッダー名の連想配列にデータを格納し、CSV出力しています。
使用例
$ sudo cpan Web/Scraper.pm Text/CSV_XS.pm JSON.pm
$ perl getLinks.pl http://eiga.com/link/ | head title,link ホーム,http://eiga.com/ 日本の映画会社,http://eiga.com/link/japan/ 映画館・興行会社,http://eiga.com/link/exhibitor/ 海外の映画会社,http://eiga.com/link/overseas/ 編集部オススメ,http://eiga.com/link/recommends/ ア行,http://eiga.com/link/#a カ行,http://eiga.com/link/#ka サ行,http://eiga.com/link/#sa タ行,http://eiga.com/link/#ta
関連記事
- 1 of 2
- next ›