我需要为初学者网络编程类构建一个网站,允许用户输入各种股票代码,然后检索它们的价格并将它们打印出来。我试着看看使用YQL或bloomberg Open APi,但我简直无法理解。有没有人有这方面的经验,我真的只知道javascript和PHP来解析任何代码。
答案 0 :(得分:1)
即使这个问题刚才被问到,但我想我会回答希望,也许还有其他人正在寻找这个问题的类似答案。
我已经使用YQL轻松地将股票信息检索到我的PHP应用程序中。我正在使用Zend Framework 2,但是,它不是必需的。
以下是我如何使用YQL提取股票信息:
public function GetQuote( $symbol )
{
if( $symbol != '' ) {
$xml = simplexml_load_file("http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20yahoo.finance.oquote%20WHERE%20symbol%3D'{$symbol}'&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys" );
$result = $xml->results->option;
$this->setPrice( $result->price->asXML() );
$this->setChange( $result->change->asXML() );
$this->setPrevClose( $result->prevClose->asXML() );
$this->setOpen( $result->open->asXML() );
$this->setBid( $result->bid->asXML() );
$this->setAsk( $result->ask->asXML() );
$this->setStrike( $result->strike->asXML() );
$this->setExpire( $result->expire->asXML() );
$this->setVolume( $result->volume->asXML() );
$this->setOpenInterest( $result->openInterest->asXML() );
return true;
} else {
return false;
}
}
我正在查询表yahoo.finance.oquote。
simplexml_load_file函数返回一个simplexml对象数组,这些对象基于查询返回的xml:
<results>
<option sym="MSFT">
<price>31.89</price>
<change>Aug 2, 4:00PM EDT</change>
<prevClose>31.89</prevClose>
<open>N/A</open>
<bid/>
<ask/>
<strike>34.82</strike>
<expire>0.9</expire>
<volume>26.26</volume>
<openInterest/>
</option>
</results>
从上面的代码中可以看出,我正在打电话:
$result = $xml->results->option;
与上面的xml直接对应。之后,您可以轻松地拉动 数据说:
$result->price->asXML();
我不知道为什么函数被称为asXML(),我想它会被称为toString()。 但是,asXML()将返回xml标签“price”之间的内容。
您可以通过转到YQL Console并在右侧选择“显示社区表”来查找所有表的列表。您可以通过键入来过滤它们,例如“财务”,它将返回与财务相关的所有表。
我希望这可以帮助任何有兴趣在PHP中使用YQL的人,因为这不仅可以用于Finance API。