如何在HTML表上抓取特定数据并从中生成数组输出?

时间:2016-02-14 03:41:02

标签: css ruby xpath nokogiri

require 'nokogiri'

require 'open-uri'

url  = 'http://racingaustralia.horse/FreeFields/RaceProgram.aspx?Key=2016Feb13,VIC,Caulfield'
html = open(url)

doc = Nokogiri::HTML(html)

## get the:

# venue
venue_data = doc.css('.top h2')

venue = venue_data.text.split(':').first.strip

# date
date_data= doc.css('.top h2')

date = date_data.text.split(',').last.to_s.strip

# type of race track (metro, provincial, country)
race_track = doc.css('.top span')[1]

track_data = race_track.text.split(':').last

track = track_data.split('(').first.strip
## loop over races

table = doc.xpath('//table')

details = table.collect do |table|

time = table.at_xpath('tr[1]/th/a/text()')

race_number = table.at_xpath('tr[1]/th/a/span[1]/text()')

race_name = table.at_xpath('tr[1]/th/a/text()')

purse =  table.at_xpath('tr[2]/td/b/text()')


end

输出应为:

output = {date: venue: track: {time:,race_number:, race_name:, purse:}, ..., }

我需要时间,race_number等具体的单词

谢谢!我需要一个数组输出。我已经将HTML文件保存在我的电脑上,并在网址上使用它的路径。

1 个答案:

答案 0 :(得分:1)

对于代码中的特定网站,您无法作为此网站的服务条款 - Terms Of Use - 明确排除抓取:

  

用户行为

     

您不得以任何涉及该网站的方式访问或使用本网站   使用计算机代码或软件应用程序(包括Internet)   机器人)运行自动化任务,搜索,复制,"刮擦",存储   和/或重复使用本网站上的材料或产品,无论是否为您的   个人,非商业,娱乐目的或其他目的。