2014-02-26 115 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