-2

これで少し迷った。nokogiri を使用してhttp://www.bbc.co.uk/sport/football/tablesからテーブル データを取得しています。必要なデータの一部を取得する方法がわからないため、SO からいくつかの助けを借りました。

require 'open-uri'
require 'nokogiri'

url = 'http://www.bbc.co.uk/sport/football/tables'
doc = Nokogiri::HTML.parse(open url)
teams = doc.search('tbody tr.team')

keys = teams.first.search('td').map do |k|
  k['class'].gsub('-', '_').to_sym
end

hsh = teams.flat_map do |team|
  Hash[keys.zip(team.search('td').map(&:text))]
end

puts hsh

これのいくつかについては少し不明です。たとえば、最終出力 hsh がこのハッシュを与えることがわかります

{:statistics=>"", :position=>"No movement 20", :team_name=>"Reading", :played=>"33", :home_won=>"4", :home_drawn=>"7", :home_lost=>"6", :home_for=>"23", :home_against=>"31", :away_won=>"1", :away_drawn=>"2", :away_lost=>"13", :away_for=>"13", :away_against=>"32", :goal_difference=>"-27", :points=>"24", :last_10_games=>"\n                                    Draw\nWin\nLoss\nLoss\nLoss\nLoss\nLoss\nLoss\nLoss\nDraw", :status=>"\n                    Report of Reading's last match                "}

{:statistics=>"", :position=>"No movement 19", :team_name=>"QPR", :played=>"33", :home_won=>"2", :home_drawn=>"8", :home_lost=>"6", :home_for=>"12", :home_against=>"23", :away_won=>"2", :away_drawn=>"4", :away_lost=>"11", :away_for=>"17", :away_against=>"31", :goal_difference=>"-25", :points=>"24", :last_10_games=>"\n                                    Draw\nDraw\nLoss\nLoss\nWin\nWin\nLoss\nLoss\nDraw\nLoss", :status=>"\n                    Report of QPR's last match                "}

だから私の考えは、各 :team_name を取得するには、通常のようにループを通過することです

hsh.each do |k,v]
  v['team_name']
end

これで、すべてのハッシュの team_name の値が得られるでしょうか? 私が達成しようとしているのはNokogiri で要素を抽出することですが、提供されたソリューションを理解し、各値をモデルに保存したいと思います

誰かが理解を明確にするのを手伝ってくれませんか

ありがとう

4

2 に答える 2