我有一个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 –