以下のスクリプトで困ってます。質問をスクリプトの下に書きましたので、よろしくお願いします。
#------------------------------------------------------------------
#!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=2 …
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.h …
↑このページも確認していろいろ試しましたが、上手くいきません。
ご指導よろしくお願いします。
こういう↓結果にしたいです。
2009年8月14日,2075,2090,2070,2080,1449300,2080
2009年8月13日,2090,2090,2080,2090,1137900,2090
以上
No.1ベストアンサー
- 回答日時:
もうちょっと、シンプルに書けると思うけど、とりあえず
#!/usr/bin/perl
use warnings;
use strict;
use Encode;
use URI;
use Web::Scraper;
my $uri_str = shift
|| 'http://table.yahoo.co.jp/t?s=9503.t&a=5&b=13&c=2 …
my $uri = new URI($uri_str) || die "$uri_str:$!";
my $scraper = scraper {
process 'table tr[bgcolor="#ffffff"]', 'records[]' => scraper {
process 'small', 'items[]' => 'TEXT';
};
};
my $res = $scraper->scrape($uri) || die "$!";
binmode STDOUT, ":encoding(shift-jis)";
foreach my $record ( @{ $res->{records} } ) {
foreach my $item ( @{ $record->{items} } ) {
$item =~ tr/,//d;
print $item, ',';
}
print "\n";
}
この回答への補足
忙しいところ、ありがとうございます。
早速試してみたのですが、以下のエラーが出ます。
どうすればよいでしょうか?
ご指導お願いします。
エラー
syntax error at bbb.pl line 10, near "my "
Global symbol "$uri" requires explicit package name at bbb.pl line 10.
Global symbol "$uri_str" requires explicit package name at bbb.pl line 10.
Global symbol "$uri_str" requires explicit package name at bbb.pl line 10.
Global symbol "$uri" requires explicit package name at bbb.pl line 18.
Execution of bbb.pl aborted due to compilation errors.
上記補足は誤りでした。
思ったとおりの結果が出ました。
ありがとうございます。
ロジックの中身について、追加で教えて欲しいのですが、
スクレイピングしたいURLの後ろ2009のあとの部分は
どういう意味があるのでしょうか?
↓
2009" ;"#6197153243450676860';
お時間のあるときでけっこうですので、よろしくお願いします。
No.2
- 回答日時:
投稿されたコードのURIをマウスオーバすると、 リンク情報が
http://....2009);
と表示されて、コピベしたときに2009以降にゴミがついたのでしょう。それ
でも開けてしまうのは、yahooがf=2009以降のクエリーをつかっていないから
だと思われます。
なので、2009" ;"#6197153243450676860';の2009以降は意味がなくて、
正しいURIを指定すればOKということです。
いろいろと教えてもらって、ありがとうございます。
非常に助かりました。
後は、ファイルの読み込みとか、書き込みとか自分で
勉強してみます。
ダメだったら、また質問させてもらいますので、
機会があれば、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP php エラー 2 2022/10/23 16:43
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- 英語 BIG CITY LIFE Look at the title of the text. Use a 2 2022/05/17 22:07
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php ログイン 1 2022/11/01 00:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl LWPでのIPv6エラー
-
Excel VBAでリンク切れをチェッ...
-
グラフのX,Y座標を取得したい
-
例外処理のフローチャートの記...
-
Excel VBA 定義されたプロージ...
-
Excel VBAで、ユーザーフォーム...
-
ハマったので助けて~。Apache...
-
ユーザー定義関数に#NAME?が返...
-
Access VBA標準モジュールにつ...
-
【vba】フォームに書いてあ...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
フォームデータ-の送信時の確認...
-
ExcelVBA:パブリック オブジェ...
-
モジュールとクラスの違いって...
-
VBAでoutlook365が起動しません。
-
VBA ユーザーフォーム Image1 ...
-
「デバイスは PRN を初期化でき...
-
モジュールとは何ですか
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VHDLについてですが何がお...
-
Perl/TkのWWW::MechanizeのGET...
-
LWP::Simpleでのgetについて
-
Perl/TkでURLを既定のブラウザ...
-
LWPでHTMLが取得できないことが...
-
XML::XPathを使う
-
URI.pmの使い方を教えてくださ...
-
Perlでgoogle newsのRSSを取得...
-
mechanizeのタイムアウト処理に...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
"JScript"が見つかりません!
-
VBSがコンパイルエラーになりま...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
VBA This Workbookモジュール...
-
モジュールの最大数はいくつな...
おすすめ情報