2013-09-08 3 views
0

Я получаю вторую таблицу от this page, анализирую ее и пытаюсь генерировать хэши из этих данных. Проблема в том, что каждый объект разделяется этим серым TR, но я могу справиться с этим, получив каждый из TR из этой таблицы.Создание хэшей из разобранного HTML

Как я могу определить надлежащее TR, получив между серыми?

Сейчас я использую эту линию, чтобы получить каждый TR:

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


EDIT:
Я не знаю, если 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...", 
    } 
    ] 
} 
+0

Вам нужно определить, какие из 'tr' элементы содержат' тд [BGCOLOR] '- это те серые строки, которые вам потом необходимо исключить. – BoltClock

+0

Просто покажите мне простые снимки желаемого хэша, чтобы я мог понять, какие данные вы пытаетесь получить, каковы ключи и каковы значения? –

+0

@Babai Я добавил то, что мне нужно в JSON в моем первом сообщении. Надеюсь, что вы получите мой POV :) – cojoj

ответ

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

Но я до сих пор не могу получить весь раздел ... – cojoj

+0

Что это значит? Посмотрите, что это плохая форма, чтобы не менять вопрос – Anko

+0

Почему вы взяли первый стол, где OP упомянул, что он искал вторую таблицу. –