http://chaos-fractal.blogspot.jp/2012/12/perl-yahoo.html
最近になって、またPerl でスクレイピングを行なっております。現在、行なっているのは、ネットショップのサイトから、商品の情報を取り出して、テキスト形式のリストを作成するというものです。
「perl は言語仕様が変なので、困ることが多く、使わないほうがよいですよ。」と知人にアドバイスされたことがありますが、perl だと便利なこともあり、つい使ってしまいます。
スクレイピングのサンプル
#!/usr/bin/perl
use strict;
use warnings;
use Web::Scraper;
use URI;
use Encode;
print STDERR "please input specail page number" ."\n";
my $page_number = <STDIN>;
chomp($page_number);
my $url = 'http://shop.xxxxxxx.co.jp/dir/special/?page=' . $page_number . '&num=50';
print STDERR $url . "\n";
my $scraper = scraper {
process '//table[@class="itemData"]/tr[1]/td[1]/input[1]','spec[]' => '@id';
process '//table[@class="itemData"]/tr[1]/td[2]','name[]' => 'TEXT';
process '//table[@class="itemData"]/tr[1]/td[3]','disc[]' => 'TEXT';
process '//table[@class="itemData"]/tr[1]/td[4]','price[]' => 'TEXT';
process '//table[@class="itemData"]/tr[1]/td[5]','fie5[]' => 'TEXT';
};
my $res = $scraper->scrape(URI->new($url));
my @spec = @{$res->{spec}};
my @name = @{$res->{name}};
my @disc = @{$res->{disc}};
my @price = @{$res->{price}};
my @fie5 = @{$res->{fie5}};
my $length = @name;
for ($_ = 0; $_ < $length; $_++){
print encode('sjis',$spec[$_])."\n";
print "spec: ". encode('sjis',$name[$_])."\n";
print encode('sjis',$fie5[$_])."\n";
}
0 件のコメント:
コメントを投稿