少し長くなるかもしれませんし、難しいかもしれないのですがお願い致します。
携帯で色んな株価を知りたい
という内容です
http://quote.nomura.co.jp/nomura/cgi-bin/parser. …
ここを見てみてください
真ん中ぐらいの
現在値 460000 ↓(15:00) -2000 -0.43%
(今の時間の値ですが)
この中で
【460000】 と【(15:00)】 と【-2000】
の値だけ引っ張りだしたいのです
あ、当然ですけど【ヤフー】ってのもです
【ヤフー】【460000】 【(15:00)】 【-2000】
【違う銘柄】【60000】 【(15:00)】 【-500】
【違う銘柄】【650】 【(15:00)】 【+50】
・・・・・
という感じで列記させたいのです
これをするためには目的のページの情報を取り込む必要があるのですが
その方法がわからないのです
行数は全ての銘柄いっしょなのでなんとかなりそうなのですが
1
そのページを取り込む
2
例えば10行目と12行目を(ヤフーってとこと現在地ってとこを10、12と仮定)
それをそのまま表示さす(もしくはテキストに落とす)
3あとは列記ひょうじだけ
という風に進めばいけそうな気がするんです
そこで
A 1が一番わからないのですが、そういう事ができるにはどうしたらいいのでしょうか?
そもそもCGIでは(perl)では無理でしょうか?
B その場合適したプログラムはなんでしょうか?
C それ以前にそもそも株値の列記であれば、こういうのあるよってのがあればそれでいいです
お知恵を拝借したいのですがどうぞよろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
#5>参考にされてたURLはほぼここでの話と同じですね。
if($string =~ /現在値.*?<\/td>/m){
$string = $&;
$string =~ s/<font.*?>|<\/font>|<b>|<\/b>|<\/td>|\s+//g;
$string =~ s/()+/,/g;
この行の 【()+】を【,】に置換してる
}
の解説と言うことなんですが、
取り出したい、テーブルの行は
<tr></tr>の中の行なんですが、その中のTDは1個しかなくて
現在地から</td>まででマッチするか調べています。
.*?は、最小マッチで?をつけないと、ずっと後の</td>までマッチしていまします。
$&は、Perlの特殊変数で、マッチした全体になっています。
ここから、必要のないタグを同様にマッチさせて削除しています。
丁度が区切りのようになっているので、,に置き換えます。複数ある場合があるので+をつけます。
No.5
- 回答日時:
自分でも作ってみました、参考にして下さい。
「ヤフー」の切り出しはきっかけが面倒なのでやってません。というか、この場合、読みにいったアドレスがヤフーだとわかっているので、規定値にしてもいいと思いますが…
#ヤフーの現在の株価を取り出す
use Socket;
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$addr = inet_aton("quote.nomura.co.jp");
$paddr = sockaddr_in(80, $addr);
connect(SERVER, $paddr);
select(SERVER);
$| = 1;
select(stdout);
print SERVER "GET /nomura/cgi-bin/parser.pl?QCODE=4689&TEMPLATE=nomura_tp_kabu_01&MKTN=T HTTP/1.0\r\n\r\n";
$/='';
$string=<SERVER>;
close(SERVER);
if($string =~ /現在値.*?<\/td>/m){
$string = $&;
$string =~ s/<font.*?>|<\/font>|<b>|<\/b>|<\/td>|\s+//g;
$string =~ s/()+/,/g;
print $string;
}
#結果
#現在値 460000↓(15:00),-2000,-0.43%
すごい!できました。
実は最初にここを参考にしてがんばってたんですが
(一番下)
http://www.phoenix-c.or.jp/~zspc/cgi-bin/wwwlng. …
思うようにいかなくて諦めてました。
ヤフー規定値の案はそれがいいですね笑
URL固定なわけだし
それでもう一つ宜しければなんですが
初心者でわからん部分があるので解説ねがえませんか?
ラストのココです
実は置換とか苦手でさっぱりわからんのですが
この辺りで欲しい所の抜き出しをやってますよね?
わかるのは
if($string =~ /現在値.*?<\/td>/m){
$string = $&;
$string =~ s/<font.*?>|<\/font>|<b>|<\/b>|<\/td>|\s+//g;
$string =~ s/( )+/,/g;
この行の 【( )+】を【,】に置換してる
}
ってことぐらいです。
なんとなく各行に解説ねがえないでしょうか?
それにしても有難うございます!
No.4
- 回答日時:
>Can't locate encoding.pm in @INC
>嗚呼もしかしてencodingできないってこと???
use encoding 'shift_jis'; の部分に1行足して,
use Encode;
use encoding 'shiftjis'; (アンダースコア無し)と変えてみてください。うまくいきますでしょうか。
レンタルサーバがWindowsの場合はshiftjis,UNIXの場合はeuc-jpです。
ありがとうです。ためしました
UNIXのようなのでeuc-jpで。
同様でしたです。多分モジュールがないんでしょ
「ただいま技術者に問い合わせております」
って、メッセージかえって来ました笑
No.3
- 回答日時:
> use encodingの行に”;”がない
失礼いたしました。
ちなみに,レンタルサーバがUNIXの場合は,'shiftjis'を'euc-jp'に変えてください。
見た事も無いエラーということですので,セミコロン抜けではなくLWP::Simpleに関わるエラーメッセージが出ているのでしょうか。
LWP::Simpleは標準のperlには入っていないので別にインストールします。他のモジュールと同じく,CPANからダウンロードします。(CPANの使い方については,web上に解説がたくさんあります)
エラーの原因が分からないので何とも言えませんが,レンタルサーバということですので,管理者にこのモジュールが使えるかどうか問い合わせる事をお勧めします。使えるように対応してくれるかもしれません。
Spidering Hacksはperlでwebから情報を取得する方法の解説書です。ちょっと高いですが,ヤフオク監視スクリプトや画像の自動ダウンロードなど,面白そうなサンプルスクリプトがたくさん載っていました。
参考URL:http://www.oreilly.co.jp/books/4873111870/toc.html
この回答への補足
ありがとうございます。UNIXでしたので'euc-jp'
でもためしてみました。サーバさんには現在聞き込み中
その本めっちゃよさそうですね。
買ってみようと思います。ありがとうございます!
No.2
- 回答日時:
use encodingの行に”;”がないというエラーを言っているのじゃないよね?
この回答への補足
ありがとう、結論は違います
今はこれでやってます
#!/usr/local/bin/perl
#############################################################
$datafile = './count.dat';
use LWP::Simple;
use encoding 'shift_jis';
$string= get("http://www.goo.ne.jp");
open(OUT, ">$datafile");
print OUT $string;
close(OUT);
print "Content-type: text/plain\n\n";
print"OK";
exit;
んで、エラーごこれです
[str.internalServerError]
[str.internalServerErrorNote]
で
Can't locate encoding.pm in @INC
嗚呼もしかしてencodingできないってこと???
古いのか?サーバが・・うーん
No.1
- 回答日時:
webページの取り込みはperlでできます。
LWP::Simpleというモジュールを使って、例えばgooのトップページのテキストを取り込む場合
use LWP::Simple;
use encoding 'shiftjis' # windowsの場合
$string= get("http://www.goo.ne.jp");
これで、$stringの中にgooトップのテキストが入ります。
(動作は未検証です)
あとはマッチングで特定の文字列を切り出して表示させれば、お考えのイメージの物ができそうです。
うろ覚えですが、オライリー・ジャパンから出ている『Spidering Hacks』という本に、株価サイトから情報を収集する、というそのものズバリの方法が書かれていたような気がします。
#!/usr/local/bin/perl
#############################################################
$datafile = './count.dat';
use LWP::Simple;
use encoding 'shiftjis' # windowsの場合
$string= get("http://www.goo.ne.jp");
open(OUT, ">$datafile");
print OUT $string;
close(OUT);
print"OK";
でやったらなんか見たこともないエラー
LWP::Simpleが使えないみたいです。
俺のレンタルサーバ…あんぎゃー
他にありますか?てか、最新のperlだっていってたけど・・なにかスクリプトミス?
気になるとこありますか?
その本はしらないので見てみたいですが
ようするにスクリプトが掲載されてる本なのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 数式がわかりません、答えが導かれる数式を教えていただけませんか? 2 2023/07/24 22:41
- 日本株 信用取引について 2 2022/06/29 08:46
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- 離婚・親族 別居後10年以上たって、離婚する場合の財産分与における、株式の評価額に関して 2 2023/06/10 15:59
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- 株式市場・株価 株の購入で情報屋の情報は信用するな!!は嘘だと思う 9 2022/08/15 19:23
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- 日本株 ヤフーなどの株式/銘柄の掲示板投稿文章の違法性について。 4 2022/08/20 00:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ApacheでのCGIについての質問
-
apacheで動作してIISで動作しな...
-
EXCELファイルに誰がアクセスし...
-
ラジオボタンのグループ化
-
CGI実行環境下の.jsや.cssが動...
-
.cgi拡張子のままCGIファイルを...
-
URLに~/cgi-bin/~を隠す方法
-
《エクセルVBA》「他の人が該当...
-
perlからJavascriptを起動
-
クライアントサイドとサーバー...
-
ASPから既存のexcelブックを開...
-
CGIでソースがそのままでてしま...
-
perl 矢印演算子 -> の使い方
-
SSIの『#exec cmd』と『#exe...
-
KENT WEBのTOPICS BOARDを改造...
-
個人的なアップローダーの設置
-
SSI(<!--#exec cmd="./XXXpl")...
-
VBAでサーバーにアクセスするに...
-
cgiのエラーが修正できません!...
-
vbでFTPサーバーに対して、サー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CGIでのPC内でのテストで画面が...
-
ApacheでのCGIについての質問
-
cgiにアクセスしても画面が真っ白
-
文法はあってるのにサーバーエ...
-
HTTP 501未実装 エラーについて
-
perl:Insecure dependency in s...
-
CGIがうまくアップできない(50...
-
CGIの設置ができない
-
CGIをHTML(scriptタグ)上でうま...
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
URLに~/cgi-bin/~を隠す方法
-
VBAでサーバーにアクセスするに...
-
ラジオボタンのグループ化
-
ASPから既存のexcelブックを開...
-
VBScriptで、ファイルから任意...
-
CGIでソースがそのままでてしま...
-
FTPにて553エラー
-
VBAを使用して、外部サーバのフ...
-
perl 矢印演算子 -> の使い方
おすすめ情報