使用YQL或其他API的股票代码网站

时间:2013-03-16 19:05:13

标签: php api yql stocks

我需要为初学者网络编程类构建一个网站,允许用户输入各种股票代码,然后检索它们的价格并将它们打印出来。我试着看看使用YQL或bloomberg Open APi,但我简直无法理解。有没有人有这方面的经验,我真的只知道javascript和PHP来解析任何代码。

1 个答案:

答案 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。

相关问题