尝试从ASX网站表中进行数据处理

时间:2012-02-10 05:40:25

标签: php javascript jquery html

我一直在尝试从ASX.com.au网站上获取数据的当前价值。也就是说,我试图抓住ASX的当前价值。这可以在这里找到。

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

这是左起第二个td,在写这个时它位于30.410。

我可以玩一些代码并且无法让它工作。

以下是我一直在玩的示例代码,如果有人能帮助我实现这一点,我将不胜感激!

<?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>

修改

更新代码

<?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>

2 个答案:

答案 0 :(得分:1)

每个人都会理所当然地告诉你,你不能用正则表达式解析html并且应该使用html解析器(比如simple_dom处的这个)但是对于你的具体问题,你可以这样做:

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];

我测试了这个并且它有效。为了使其更加强大,我建议使用其他工具,但这应该让你开始。祝你好运!

答案 1 :(得分: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:)