2014-02-26 76 views
0

XML我使用的是YQL查询(标准的例子查询,用歌,雅虎,MSFT和AAPL)生成XML的所有可用字段。我想在使用Ruby脚本生成XML输出后,为YQL站点寻找帮助,这样我就可以反复运行不同的股票并将数据存储在某个地方。我还没有完成我的脚本,但我似乎只是没有运行。下面是代码:YQL雅虎财经刮板上的Ruby

yahoo_finance_scrape.rb

require 'rubygems' 
require 'nokogiri' 
require 'restclient' 

PAGE_URL = "http://developer.yahoo.com/yql/console/" 
yql_query = 'use "http://github.com/spullara/yql-tables/raw/d60732fd4fbe72e5d5bd2994ff27cf58ba4d3f84/yahoo/finance/yahoo.finance.quotes.xml" 
as quotes; select * from quotes where symbol in ("YHOO","AAPL","GOOG","MSFT") ' 

if page = RestClient.post(PAGE_URL, {'name' => yql_query, 'submit' => 'Test'}) 
    puts "YQL query: #{yql_query}, is valid" 

    xml_output = Nokogiri::HTML(page) 
    lines = xml_output.css('#container #layout-doC#yui-gen3000008 #yui-gen3000009 #yui_3_11_0_3_1393417778356_354 
          #yui-gen3000015 #yui-gen3000016 div#yui_3_11_0_2_1393417778356_10 #centerBottomView 
          #outputContainer div#output #outputTabContent #formattedView #viewContent #prexml') 

    lines.each do |line| 
     puts line.css('span').map{|span| span.text}.join(' ') 
     sleep 0.03 
    end 
end 

当我运行程序,只打印 “YQL查询:使用” http://github.com/spullara/yql-tables/raw/d60732fd4fbe72e5d5bd2994ff27cf58ba4d3f84/yahoo/finance/yahoo.finance.quotes.xml “ 的报价; SELECT * FROM报价凡在符号(” YHOO“,”AAPL“,”GOOG“,”MSFT“)有效” 然后停止。哦,我正在使用Github网址,因为yahoo.finance.quotes没有工作,而Stackoverflow上的其他人建议使用它。

如果你想检查CSS标签,只是去http://developer.yahoo.com/yql/console/并进入我的查询,就可以做一个检查元素。我会在这里发布,但我不知道如何。

回答

0

输出只是你yql_query变种的内容。所以这没有多大帮助。

你可能不应该把“用斧头XXXX引号”在你的代码的字符串。 看看“别人”有什么想法。

RestClient.post()该方法返回一个响应对象。对于所有HTTP操作,请始终检查response.code,否则您不知道错误。

response = RestClient.post(...) 
puts "HTTP Response code: #{response.code}" 
if response.code == 200 
    page = repsonse.to_str 
    ... 
end 

根据该引入nokogiri网站像它的xml_output.css()方法是过滤器的CSS选择器。如果你有例如“#container#layout-doc”,这意味着“在ID'容器'的元素内部使用ID'layout-doc'过滤元素等等,这真的是你想要做的吗?如果是的话,最后的“#prexml”应该是够了,更容易出错,因为IDS通常应该是唯一的。

+0

我会尝试,最后一点出来。我双击通过手动输入它作为检查“使用XXXX斧引号”一个查询和它的工作,所以我不认为这是问题的根源。我意识到,我没有任何错误消息,但我应该如何解决这个问题,我已经实现了错误处理块? – user3103499

+0

已实施错误处理仍然得到相同的结果没有错误但没有输出 – user3103499

+0

什么是响应代码 – Meier