Разбор таблицы с Nokogiri - PullRequest
0 голосов
/ 15 мая 2018

Я чувствую, что должен быть настолько близок к этому, но, похоже, не могу определить правильное имя таблицы для получения данных. Может ли кто-нибудь быстро взглянуть на это и сказать мне, где я иду не так? Вы уверены, что в настоящее время я не получаю данные из табличной переменной?

def oddsmath

   require 'nokogiri'


   tables_data = []

   doc = Nokogiri::HTML(open("http://www.oddsmath.com/odds-comparison/"))

  doc.css('table#table-odds-comparison.tbl-odds-comparison.tablesorter.tablesorter-default.hasStickyHeaders').each do |table|

# find all rows in the current table, then iterate over the second all the way to the final one...
table.css('tr')[1..-1].each do |tr|

# collect the cell data and raw names from the remaining rows' cells...
raw_name = tr.at('th').text
cell_data = tr.css('td').map(&:text)

# aggregate it...
tables_data += [raw_name, cell_data]
end
end
@output=tables_data

end

1 Ответ

0 голосов
/ 15 мая 2018

Если вы посмотрите на фактический HTML-код, возвращаемый при посещении этой страницы, вы увидите, что таблица фактически пуста, а ее содержимое динамически загружается JS.Из-за этого вы не можете делать то, что вы хотите, просто nokogiri открыв страницу.Вам нужно будет использовать что-то, что позволит вам управлять реальным браузером (или эмулировать браузер с поддержкой JS), чтобы страница полностью загружалась до получения содержимого страницы, или вам необходимо выяснить, какой URL страницызагружает данные для таблицы и проверяет, есть ли у вас доступ к ней напрямую (может быть невозможно).

...