2013-03-16 62 views
-2

我需要建立一个初学者的网络编程类的网站,允许用户输入各种股票的符号,然后检索他们的价格和打印出来的HTML表。我试图看看使用YQL或Bloomberg Open APi,但我简直不能理解。有没有人有任何经验,我真的只知道JavaScript和PHP解析任何代码。股票代码网站使用YQL或其他api

+0

我写了一篇关于此的博客文章,可以帮助你:http://zacvineyard.com/blog/2015/11/how-to-get-stock-quotes-with-php-using-the-yahoo-金融-API。我强调的代码将使用yql来提取股票数据。 – zvineyard 2015-11-08 05:18:59

回答

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。

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

正如你可以从上面的代码中看到的,我呼吁:

使用simplexml_load_file函数返回的基于XML的SimpleXML对象的数组从查询返回

$result = $xml->results->option; 

它与上面的xml直接对应。之后,你可以很容易地只是说拉 数据:

$result->price->asXML(); 

我不知道为什么被调用的函数asXML(),我会想象它被称为的toString()。 但是,asXML()将返回xml标签“价格”之间的内容。

您可以通过转至YQL Console并选择右侧的“显示社区表”来找到所有表的列表。您可以通过键入来过滤它们,例如“Finance”,它将返回所有与财务有关的表。

我希望这可以帮助任何对在PHP中使用YQL感兴趣的人,因为这可以不仅仅用于财务API。