我有一個rails應用程序,其中我從互聯網上抓取數據。我有這個代碼片段,它報告語法錯誤,從而阻止它運行。語法錯誤Ruby
我試圖整理出來,但無法找出哪裏出了什麼問題。我哪裏錯了。
的片段如下:
def reuters
ticker_sym = 'FB.O'
reuters_home_url = "http://in.reuters.com"
reuters_base_url = "http://in.reuters.com/finance/stocks/"
board_members = Nokogiri::HTML(open(reuters_base_url + 'companyOfficers?symbol=' + ticker_sym.to_s))
members = []
table = board_members.css('.column1 tbody.dataSmall').first
table_desc = board_members.css('.column1 tbody.dataSmall')[1]
table.css('tr').each_with_index do |row,index|
next if index == 0
members << {
name: row.css('td[1] h2 a').text.strip,
title: row.css('td[4]').text.strip,
position_held: row.css('td[3]').text.strip,
age: row.css('td[2]').text.strip,
member_link: URI.join(reuters_home_url,row.css('td[1] h2 a').attr("href")).to_s
table_desc.css('tr').each_with_index do |col,index2|
next if index2 == 0
members << {
description: col.css('td[2]').text.strip
}
end
}
end
end
粘貼瞭如下圖所示我的Rails應用程序錯誤頁面的截圖:
不要做像'row.css('td [1] h2 a')。text'這樣的事情。使用'at'或'at_css'而不是'css'。你未來的自我會感謝你。 –
什麼可能是更好的訪問數據的方式。爲了簡潔起見,您可以使用我的示例向我展示。我對nokogiri完全陌生 –
基本的問題是NodeSet的'text'方法會將所有文本連接在一起,通常會導致非常混亂的輸出。相反,您只想在節點上使用它。 http://stackoverflow.com/a/39477538/128421 –