2

想知道是否有人可以帮助解决以下问题。我正在使用 Nokogiri 从http://www.bbc.co.uk/sport/football/tables抓取一些数据

我想得到联赛表信息,到目前为止我得到了这个

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-stats,然后用一类团队获取表格中的每一行,这些行包含我需要的所有信息,如位置编号、播放量、团队名称等。

一旦我在 tr.team 我想我可以做一个循环来从行中获取相关信息。

它是我坚持的 xpath 部分(除非我正在接近整个错误?),如何从 .t​​able-stats 进入 tr.team 类?

任何人都可以提供任何指示吗?

谢谢

4

1 回答 1

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
于 2013-04-19T20:26:26.050 回答