从解析的HTML创建哈希

时间:2013-09-08 20:54:11

标签: ruby css-selectors web-scraping nokogiri

我从this page获得第二个表,解析它并尝试从这些数据生成哈希值。问题是每个对象都由此灰色TR分隔,但我只能通过从此表中获取每个TR来管理它。

如何通过在灰色之间获取正确的TR来确定它?

现在我使用这一行来获取每个TR

parsed_html.css("table")[1].css("tr")


修改
我不知道Hash是否是一个很好的方法来完成这项任务,但这里是JSON的“提升和分拣”部分(这是一个样本,可以随意纠正我):

{
  "chapter":"07",
  "title":"LIFTING AND SHORING",
  "description":"This chapter shall...",
  "section":[
    {
      "number":"00",
      "title":"GENERAL",
      "description":"",
    },

    {
      "number":"10",
      "title":"JACKING",
      "description":"Provides information relative...",
    },

    {
      "number":"20",
      "title":"SHORING",
      "description":"Those instructions necessary...",
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

假设您正在使用nokogiri,我会做类似

的事情
#!/usr/local/env ruby

require 'nokogiri'
require 'open-uri'
require 'pp'

doc = Nokogiri::HTML(open('http://www.s-techent.com/ATA100.htm'))

d = doc.css("table")[1] #.css("tr")

array = []

d.css('tr').each do |r|

    tds = r.css("td") # extract the td elements from this tr

    array << tds.map {|td| td.text.strip }
end

pp array