1

私が達成しようとしていることでゆっくりとそこに着きます。画面グラブを介してデータを取得しており、データをモデルに保存したいと考えています。home_team と away_team の 2 つの列があります。これまでのところ、データを取得します。

FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures"

def get_fixtures # Get me all Home and away Teams
doc = Nokogiri::HTML(open(FIXTURE_URL))
home_team = doc.css(".team-home.teams").map {|h| h.text.strip }
away_team = doc.css(".team-away.teams").map {|a| a.text.strip }
#team_clean = Hash[:home_team => home_team, :away_team => away_team]
#team_clean = Hash[:team_clean => [Hash[:home_team => home_team, :away_team => away_team]]]
end

データをハッシュにする 2 つの方法をハッシュ化しました。1 つはハッシュで、もう 1 つはハッシュ内のハッシュです。どちらが必要かわかりません (もしあれば?)

したがって、home_team から受け取ったデータを保存したい場合は、rake タスクを実行してこれを行います

def update_fixtures #rake task method
Fixture.destroy_all
get_fixtures.each {|home| Fixture.create(:home_team => home )}
end

私が達成したいのは、home_team と away_team を同時に保存できるようにすることです。ハッシュ内のデータにアクセスする必要がありますか? ここで少し迷いましたが、これを試みるのはこれが初めてです

任意の助けをいただければ幸いです

4

1 に答える 1

2

これを試して、

FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures"

def get_fixtures # Get me all Home and away Teams
  doc = Nokogiri::HTML(open(FIXTURE_URL))
  matches = doc.css('tr.preview')
  matches.each do |match|
    home_team = match.css('.team-home').text.strip
    away_team = match.css('.team-away').text.strip
    Fixture.create!(home_team: home_team, away_team: away_team)
  end
end

Fixtureこれは試合をループし、試合ごとにアウェイ チームとホーム チームを新たに作成します。

編集:

追加した.text.strip

編集2:

これで日付も取得できるはずです。

FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures"

def get_fixtures # Get me all Home and away Teams
  doc = Nokogiri::HTML(open(FIXTURE_URL))
  days = doc.css('#fixtures-data h2').each do |h2_tag|
    date = Date.parse(h2_tag.text.strip)
    matches = h2_tag.xpath('following-sibling::*[1]').css('tr.preview')
    matches.each do |match|
      home_team = match.css('.team-home').text.strip
      away_team = match.css('.team-away').text.strip
      Fixture.create!(home_team: home_team, away_team: away_team, date: date)
    end
  end
end

h2日付を含むタグの後の次の HTML 要素を呼び出すために XPath を使用する必要があるため、前のコードよりも少し複雑です。

h2HTML内のすべての html タグをループしてから、各 のすぐ下/直後にあるタグをdiv#fixtures-data取得します。tableh2

于 2013-03-14T11:51:53.750 に答える