PerlのWeb::Scraperと正規表現について教えてください。
以下のスクリプトで困ってます。質問をスクリプトの下に書きましたので、よろしくお願いします。
#------------------------------------------------------------------
#!C:/strawberry/perl/bin/perl
use strict;
use Web::Scraper;
use URI;
use YAML;
use encoding 'shiftjis';
my $stuff = URI->new("http://table.yahoo.co.jp/t?s=9503.t&a=5&b=13&c=2009&d=8&e=14&f=2009");
my $scraper = scraper {
process "table table table tr td small", 'news[]' => { title1 => 'text' };
};
my $result = $scraper->scrape($stuff);
print YAML::Dump $result;
#------------------------------------------------------------------
上記のPerlスクリプトでは、
---
news:
- title1: 年
- title1: 月
- title1: 日
- title1: から
- title1: までのデータ
- title1: デイリー
- title1: 週間
- title1: 月間
- title1: '銘柄コード: '
- title1: 2009年8月14日
- title1: '2,075'
- title1: '2,090'
- title1: '2,070'
- title1: '2,080'
- title1: '1,449,300'
- title1: '2,080'
- title1: 2009年8月13日
- title1: '2,090'
- title1: '2,090'
- title1: '2,080'
- title1: '2,090'
- title1: '1,137,900'
- title1: '2,090'
のような結果が出ます。
結果を以下のようにCSVで取り出したいのですが、ロジックをどのように変更すればよいでしょうか?
多分正規表現を使うんだと思うのですが、分かりません。
http://weblog.nqou.net/archives/20090301140728.html
↑このページも確認していろいろ試しましたが、上手くいきません。
ご指導よろしくお願いします。
こういう↓結果にしたいです。
2009年8月14日,2075,2090,2070,2080,1449300,2080
2009年8月13日,2090,2090,2080,2090,1137900,2090
以上
お礼
いろいろと正規表現などを改良してみて、何とか情報を取得することができました! 丁寧なご説明、本当にありがとうございました。
補足
ご丁寧な返信、本当にありがとうございます。 何とか古本3冊の値段と品質の値を取ってくることが出来ました。 そこで、最後に1つだけお聞きしたいのですが、プログラムを改良して取得する値を3冊から10冊にしたのですが、5冊目以降あたりから Use of uninitialized value in concatenation (.) or string at sample.pl. というエラーが出てしまい困っています。 exit if ($total[0] == 1); print "2 ". $usedprices[1] . "" . $usedstatus[1] . "\n"; 上記の部分をコピペして10冊表示するようにしたので表示の部分は問題ないと思い、値がうまく取得できていないようなので正規表現の部分を改良いるのですが…どうも5冊目以降あたりからエラーが出てしまいます。 たびたびすみません。よろしくお願いします。