WEB検索を楽にするためにツールを探すなかで「WebScraper IDE」をみつけました。
http://labs.gmo.jp/blog/ku/2008/03/webscraperwebscraper_ide.html
これを使うために、perlとactiveperlおよび、コードの中に出てくるwebscraperをインストールしました。
そして、上記URLの通りにツールから出力されるソースを貼り付けて実行しましたが、
HASH(0x32db38c)やHASH(0x32d4384)などと出るだけで、思う結果が出力されません。
プログラム内に何か書き込むことが必要なのか、あるいは
なにかのインストールが必要なのかもわかりません。
わかる方がいらっしゃいましたら、アドバイスお願いいたします。
■貼り付けたソース
use URI;
use Web::Scraper;
my $scraper = scraper {
process '//div[contains(concat(" ",@class," "),concat(" ","Table01"," "))]',
'paragraphes[]' => scraper {
process '//strong',
'field1' => 'TEXT';
process '//tr[3]//p',
'field2' => 'TEXT';
process '//tr[4]/td[2]',
'field3' => 'TEXT';
};
};
my $result = $scraper->scrape( URI->new("http://www.starbucks.co.jp/search/result_store.php" ) );
print "$result\n";
■PCの環境
windowsXP
activeperl最新版(perlv5.10.0 ,PPM4.03)
webscraper 0.26
my $result = $scraper->scrape( ... )
で$resultにはハッシュリファレンスが入っているのでprintしただけだとHASH(0x32db38c)などと表示されます。
CPANのYAMLモジュールをインストールしてDumpすればリファレンスの中身を展開して出力できます。
具体的には
use YAML;
を追加して
binmode STDOUT, ":utf8"; print YAML::Dump $result;
をprintの代わりにする。
ありがとうございます!
いただいたヒントに加えて、
use encoding "shiftjis"; を追加することで、
思ったものに近いものが出るようになりました!
ただ、まだエラーが一種類だけ繰り返しでます。
"\x{00a0}" does not map to shiftjis at test3.pl line 21.
21行目は今加えた
print YAML::Dump $result;
です。
回答ありがとうございます。スラッシュを一つ追加するってことですね。
明日、早速やってみます。
参考にならないかもしれませんが、補足説明です。
実行するときは、テキストファイルに貼り付けて、testなどといった名前のファイルにしてコマンドプロンプトで実行しています。
perl test.pl