2012-02-10 13 views
0

私はASX.com.auウェブサイトから在庫の現在の値を削り取ろうとしていました。すなわち、私はASXの現在の価値をつかむことを試みています。これはここで見つけることができます。ASXウェブサイトテーブルからデータを取得しようとしています

http://www.asx.com.au/asx/markets/equityPrices.do?by=asxCodes&asxCodes=asx

それは、これを書いている時点で、それは30.410で座っている、左から2番目のTDです。

私はいくつかのコードで遊ぶことができ、それを動作させることができませんでした。

以下は私がお手伝いしてくれたサンプルコードですが、誰かがこれを働かせるように手伝ってくれたら嬉しいです!

<?php 

$data = file_get_contents('http://www.asx.com.au/asx/markets/equityPrices.do?by=asxCodes&asxCodes=asx'); 

$asx = explode('<th class="row" scope="row">ASX: </th>', $data); 
$asx = substr($asx[1], 4, strpos($asx[1], '</td>') - 4); 

?><div class="asxvalue"><?php echo $asx . "<br />\n";?></div> 

EDIT

コードの更新

<?php 

$data = file_get_contents('http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode=DTL'); 

preg_match('/<td class="last">([^<]*?)</td>/i',$data,$matches); 
$valueYouWant = $matches[1]; 

?><div class="data"><?php echo $valueYouWant ?></div> 
+0

http://www.asx.com.au/legal/terms-use.htmあなたが使用してはならない*任意のクモ、スクリーンスクレーパー、ロボット、またはASXの書面による事前の承認なしに、コンテンツをコピー、ダウンロード、またはモニタするために禁止デバイス(またはそれに類するプロセス)を使用することはできません。 。* –

+0

ああ、間違いなくこれをチェックしたはずです。有難うございます! 実際に実装していない場合は、学習目的のためにコードを手伝ってもらえますか? –

答えて

1

誰もが当然あなたが正規表現でHTMLを解析することができないことを教えてくれますし、simple_domでこのようなHTMLパーサを(使用する必要があります)あなたの特定の問題のためにこれをすることができます:

preg_match('/<td class="last">([^<]*?)</td>/i',$data,$matches); 
$valueYouWant = $matches[1]; 

他のページの日付と最後の値を調べるには、次のものを使用できます。 実際にはSimple_Domを使ってこのようなことをお勧めしますが、これでうまくいきます。

$data = file_get_contents('http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode=DTL'); 
preg_match('/id="closing-prices".*?<strong>(.*?)<\/strong>.*?<td class="last">(.*?)<\/td>/s',$data,$matches); 
$date = $matches[1]; 
$lastValue = $matches[2]; 

これをテストして動作します。もっと頑強にするために、私は他のツールを使うことをお勧めしますが、これはあなたを地面から離れさせます。がんばろう!このため

+0

私は今、simple_domを探しています。ちょうどあなたが投稿したコードを実装する方法は? 私はそれをPHPタグでラップし、echo $ valueYouWantを入れてみました。 PHPエラーが返されました。 –

+1

$ dataが定義されている行の直後に置くことができるはずです...どのエラーが印刷されましたか?たぶんあなたのPHP設定には何とかpreg関数がありませんか? – hackartist

+0

ああ、私は$ data行を含んでいませんでした> _ < 私は月曜日にこれをもう一度見ていきます:)あなたの助けてくれてありがとう! –

0

おかげで - 私はWordpressのPHPコードウィジェットのコードを使用することができましたし、それがASX株価のための御馳走に動作します:

<?php 

$data = file_get_contents('http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode=asx'); 
preg_match('/id="closing-prices".*?<strong>(.*?)<\/strong>.*?<td class="last">(.*?)<\/td>/s',$data,$matches); 
$date = $matches[1]; 
$lastValue = $matches[2]; 

?><div class="data">$<?php echo $lastValue ?></div> 

誰かがすべてのケースにまとめ上記の解決策を見つけるかもしれないと思いましたそれは有用だった。この質問のhackartistに答えるために非常に多くの

ありがとう:)

関連する問題