印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxPerl Web::Scraper のインストール

Web サイトのスクレイピングのために Web::Scraper をインストールする。

■ ■ ■

Web サイトから特定の数値などを取り出すことをウェブスクレイピングという (ウェブスクレイピング - Wikipedia)。Perl では Web::Scraper モジュールを使うと,CSS セレクタや XPath を指定すると情報の抽出ができる (Web::Scraper - search.cpan.org)。これをインストールする。

Vine Linux の場合

動作環境は Vine Linux 6.2, cpan 2.10, Web::Scraper 0.38 である。

cpan を使ってインストールするのが簡単。

# cpan -i Web::Scraper

Web::Scraper が使用するモジュールがいくつかあるが,自動でインストールされないこともあるので,必要ならば手動でインストールしておく。

# cpan -i Carp
# cpan -i Scalar::Util
# cpan -i List::Util
# cpan -i HTML::Tagset
# cpan -i HTML::TreeBuilder::XPath
# cpan -i HTML::Selector::XPath
# cpan -i UNIVERSAL::require
# cpan -i XML::LibXML

さて,Web::Scraper には scraper コマンドがついている。scraper コマンドを使うと,Perl プログラムを作らなくても,直接 Web サイトにアクセスして情報が取得できるかどうかを試すことができる。しかも,取得が確認できたら,必要な Perl のソースコードを出力してくれるという便利機能つき。しかし,scraper コマンドは cpan コマンドではインストールされない。cpan を使うと,ソースが ~/.cpan/build/Web-Scraper-0.38-xxxxxx に展開されるので,そこから取り出してやる必要がある。

# cp ~/.cpan/build/Web-Scraper-0.38-xxxxxx/bin/scraper /usr/local/bin

これで完了である。

Mac OS X の場合

Mac ローカルでもテストできる環境を作っておきたい。

動作環境は Mac OS X El Capitan 10.11.6, MacPorts 2.3.4, Perl 5.22.2, cpan 1.61, Web::Scraper 0.38, bash 3.2.57 である。

$ sudo cpan -i Web::Scraper
...
Running Build install
Installing /opt/local/lib/perl5/site_perl/5.22/Web/Scraper.pm
Installing /opt/local/lib/perl5/site_perl/5.22/Web/Scraper/Filter.pm
Installing /opt/local/lib/perl5/site_perl/5.22/Web/Scraper/LibXML.pm
Installing /opt/local/share/perl5.22/siteman/man3/Web::Scraper.3pm
Installing /opt/local/share/perl5.22/siteman/man3/Web::Scraper::Filter.3pm
Installing /opt/local/share/perl5.22/siteman/man3/Web::Scraper::LibXML.3pm
  MIYAGAWA/Web-Scraper-0.38.tar.gz
  ./Build install  -- OK
$ sudo cp ~/.cpan/build/Web-Scraper-0.38-xxxxxx/bin/scraper /opt/local/bin

しかし,scraper を実行しようとすると,エラーと言われる。

$ scraper
Can't locate Web/Scraper.pm in @INC (you may need to install the Web::Scraper module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at ./scraper line 10.
BEGIN failed--compilation aborted at ./scraper line 10.

これは @INC の中に Perl モジュールのパスが入っていないのが原因である。@INC へのパス追加にはいくつかの方法があるようだが,ここでは PERL5LIB 環境変数を使う。

使っているシェルは bash だとすると,~/.bash_profile で環境変数設定すればよい。

$ vi ~/.bash_profile
export PERL5LIB=/opt/local/lib/perl5/site_perl/5.22

このように書くと,@INC の先頭に /opt/local/lib/perl5/site_perl/5.22 が追加される。これで動作するようになる。

エラーをよく見ると perl 5.18 のライブラリを見に行っているのが気になる。これは,Mac の Perl が /usr/bin/perl にあって,これのバージョンが 5.18 で,MacPorts の Perl が /opt/local/bin/perl にあって,バージョンが 5.22.2 なのが原因である。Bash は /opt/local/bin/perl を呼び出していて,プログラムに書いてあるパスは /usr/bin/perl なので不整合が生じている。今回はこれを気に留めておくだけにして,何らかの問題が生じたらチェックすることにする。

Posted by n at 2016-07-16 02:29 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?