人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlに関する質問です。
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

●質問者: tomokazu
●カテゴリ:インターネット ウェブ制作
✍キーワード:Class IDE pc Perl print
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ele_dir
●35ポイント

process '//tr[4]/td[2]',

の部分を、を

process '//tr[4]//td[2]',

にしてみても同じでしょうか?

◎質問者からの返答

回答ありがとうございます。スラッシュを一つ追加するってことですね。

明日、早速やってみます。

参考にならないかもしれませんが、補足説明です。

実行するときは、テキストファイルに貼り付けて、testなどといった名前のファイルにしてコマンドプロンプトで実行しています。

perl test.pl


2 ● otsune
●35ポイント
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;

です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ