2013-04-19 3 views
2

Было интересно, может ли кто-нибудь помочь в следующем. Я использую Nokogiri, чтобы очистить некоторые данные из http://www.bbc.co.uk/sport/football/tablesИзвлечение элементов с помощью Nokogiri

Я хотел бы получить информацию таблицы лиги, до сих пор Ive получил этот

def get_league_table # Get me Premier League Table 
    doc = Nokogiri::HTML(open(FIXTURE_URL)) 
    table = doc.css('.table-stats') 
    teams = table.xpath('following-sibling::*[1]').css('tr.team') 
    teams.each do |team| 
    position = team.css('.position-number').text.strip 
    League.create!(position: position) 
    end 
end 

Так я думал, я бы захватить .table-статистику, а затем получить каждая строка в таблице с классом команды, эти строки содержат всю необходимую мне информацию, такую ​​как номер позиции, имя игрока, имя команды и т. д.

Как только я нахожусь в tr.team, я думал, что смогу сделать чтобы захватить соответствующую информацию из строк.

Его часть xpath Я застрял (если я не подхожу ко всему, что не так?), Как добраться до класса tr.team из .table-stats?

Не могли бы вы предложить какие-либо указатели?

Благодаря

+0

как выход, что вы хотите? –

+0

Я сохраняю атрибуты для модели, поэтому просто нужно захватить ее как текст. – Richlewis

ответ

3

Это сценарий я сделал для динамического разбора таблицы, я приспособил его к делу:

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 
+0

@nicoga wow thats real nice, thanks, поэтому каждый файл данных сохраняется в хэш, поэтому я могу вытащить атрибуты, которые я хочу , т.е. позицию, захватывая ключ/значение? – Richlewis

+0

theres некоторый код здесь, который im не уверен с тем, что происходит. Мне нужно захватить каждое имя команды, например, и сохранить модель – Richlewis

+0

Не могли бы вы рассказать мне значение 'tbody tr.team'? где такая техника написана в документе «nokogiri»? из любопытства, я спрашиваю, пожалуйста, дайте мне знать. –