【发布时间】:2017-01-19 14:36:06
【问题描述】:
我有一个 Rails 应用程序,我正在从互联网上抓取数据。我有这个 sn-p 代码,它报告语法错误,从而阻止它运行。
我试图解决它,但无法找出问题所在。我哪里错了。
sn-p如下图:
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方法会将所有文本连接在一起,通常会导致输出非常混乱。相反,您只想在节点上使用它。 stackoverflow.com/a/39477538/128421
标签: ruby-on-rails ruby syntax-error