下記のソースで、a[ @class="url" ]のものを目的のページから1つだけ抽出することはできるのですが、
ページ内にある全てのa[ @class="url" ]を抽出するためには、どのように変更したらよいのでしょうか。
use Web::Scraper;
use URI;
use encoding "shiftjis";
binmode STDERR, ":encoding(shiftjis)";
# 特定部分を number という名前で取るスクレイパーを作成
my $scraper = scraper {
process '//a[ @class="url" ]', 'number' => 'TEXT';
};
# 入力モードでオープン
open(FH,"<yomikomi.txt");
# 読み込み
@line = <FH>;
close(FH);
# URL情報に追加
$a = "http://abc.";
$b = "&abc";
@list=();
foreach (@line) {
push(@list,$a . $_ . $b);
}
# ファイル名をしたファイルへの書き込み
my $out_file = "kakikomi.txt"; #出力ファイル
open( my $out_fh, ">", $out_file );
foreach (@list) {
my $uri = URI->new($_); # URLオブジェクトを取得
my $res = $scraper->scrape($uri); # スクレイパーに渡す。(スクレイピングされる)
print $out_fh"$res->{number}\n";
}
close(IN);
use Web::Scraper; use URI; use encoding "shiftjis"; binmode STDERR, ":encoding(shiftjis)"; # 特定部分を number という名前で取るスクレイパーを作成 my $scraper = scraper { process '//a[ @class="url" ]', 'number[]' => 'TEXT'; }; # 入力モードでオープン open(FH,"<yomikomi.txt"); # 読み込み @line = <FH>; close(FH); # URL情報に追加 $a = " http://abc."; $b = "&abc"; @list=(); foreach (@line) { push(@list,$a . $_ . $b); } # ファイル名をしたファイルへの書き込み my $out_file = "kakikomi.txt"; #出力ファイル open( my $out_fh, ">", $out_file ); foreach (@list) { my $uri = URI->new($_); # URLオブジェクトを取得 my $res = $scraper->scrape($uri); # スクレイパーに渡す。(スクレイピングされる) for my $number (@{$res->{number}}) { print $out_fh "$number\n"; } } close(IN);
こんな感じでしょうか?
試してないので分かりませんが。
process '//a[ @class="url" ]', 'number' => 'TEXT';
を
process '//a[ @class="url" ]', 'number[]' => 'TEXT';
に変えると動きます。
ありがとうございます!
やってみたのですが、まだ動きません。。
print $out_fh"$res->{number}\n";
のあたりにも問題があるのかなと、個人的には思っているのですが。。
use Web::Scraper; use URI; use encoding "shiftjis"; binmode STDERR, ":encoding(shiftjis)"; # 特定部分を number という名前で取るスクレイパーを作成 my $scraper = scraper { process '//a[ @class="url" ]', 'number[]' => 'TEXT'; }; # 入力モードでオープン open(FH,"<yomikomi.txt"); # 読み込み @line = <FH>; close(FH); # URL情報に追加 $a = " http://abc."; $b = "&abc"; @list=(); foreach (@line) { push(@list,$a . $_ . $b); } # ファイル名をしたファイルへの書き込み my $out_file = "kakikomi.txt"; #出力ファイル open( my $out_fh, ">", $out_file ); foreach (@list) { my $uri = URI->new($_); # URLオブジェクトを取得 my $res = $scraper->scrape($uri); # スクレイパーに渡す。(スクレイピングされる) for my $number (@{$res->{number}}) { print $out_fh "$number\n"; } } close(IN);
こんな感じでしょうか?
試してないので分かりませんが。
ありがとうございました!!
できました!!!!
ありがとうございました!!
できました!!!!