桜ヶ丘日記

技術メモとかとか

さくらVPSでとりあえずWeb::Queryが使えるようにしてみる

PerljQuery風のセレクタを使ってスクレイピングが出来るモジュール、Web::Queryを使いたいのでまずは使えるようにしてみる。

インストール。

$ sudo yum -y install cpan
(中略)
Installed:
  perl-CPAN.x86_64 0:1.9402-131.el6_4

Dependency Installed:
  perl-Digest-SHA.x86_64 1:5.47-131.el6_4
  perl-ExtUtils-MakeMaker.x86_64 0:6.55-131.el6_4
  perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-131.el6_4
  perl-Test-Harness.x86_64 0:3.17-131.el6_4
  perl-devel.x86_64 4:5.10.1-131.el6_4

Complete!
$ sudo cpan
cpan> install CPAN
cpan> reload cpan
$ sudo cpan Module::Build
$ sudo cpan Web::Query

テスト。
自動車のメーカー名一覧をgoo-netから取得するよー!

$ cat > ~/sample.pl
use strict;
use warnings;
use Web::Query;

binmode(STDOUT, ":utf8");

wq('http://www.goo-net.com/catalog/')
  ->find('div.box_searchUsedCar ul.line li a')
  ->each(sub{
    $_[1]->each(sub{
      my(undef, $wq) = @_;
      my $name_j = $wq->text();
      my $name = $wq->attr('href');
      $name =~s|^/catalog/(\w+)/index.html$|$1|;
      print qq|$name ($name_j)\n|;
    })
  });
exit;

実行してみる

$ perl ~/sample.pl
LEXUS (レクサス)
TOYOTA (トヨタ)
NISSAN (日産)
HONDA (ホンダ)
MAZDA (マツダ)
EUNOS (ユーノス)
FORD_JAPAN (日本フォード)
MITSUBISHI (三菱)
SUBARU (スバル)
DAIHATSU (ダイハツ)
SUZUKI (スズキ)
ISUZU (いすゞ)
MITSUOKA (ミツオカ)
RENAULT (ルノー)
PEUGEOT (プジョー)
CITROEN (シトロエン)
VENTURI (ヴェンチュリー)
MERCEDES_BENZ (メルセデス・ベンツ)
AMG (AMG)
MAYBACH (マイバッハ)
MCC_SMART (スマート)
BMW (BMW)
BMW_ALPINA (BMWアルピナ)
AUDI (アウディ)
VOLKSWAGEN (フォルクスワーゲン)
MINI (MINI)
OPEL (オペル)
PORSCHE (ポルシェ)
EUROPE_FORD (ヨーロッパフォード)
YES (イエス!)
VOLVO (ボルボ)
SAAB (サーブ)
ROLLSROYCE (ロールスロイス)
BENTLEY (ベントレー)
JAGUAR (ジャガー)
DAIMLER (デイムラー)
LAND_ROVER (ランドローバー)
MG (MG)
ROVER (ローバー)
LOTUS (ロータス)
ASTON_MARTIN (アストンマーティン)
MORGAN (モーガン)
TVR (TVR)
FIAT (フィアット)
ABARTH (アバルト)
FERRARI (フェラーリ)
LANCIA (ランチア)
ALFA_ROMEO (アルファロメオ)
MASERATI (マセラティ)
LAMBORGHINI (ランボルギーニ)
AUTOBIANCHI (アウトビアンキ)


参考
http://d.hatena.ne.jp/lesamoureuses/20110222/1298317227

プログラミングPerl〈VOLUME1〉