在Ruby中解析表的最佳方法

Tom*_*man 3 ruby parsing

我想将一个简单的表解析为Ruby数据结构.该表如下所示:

alt text http://img232.imageshack.us/img232/446/picture5cls.png http://img232.imageshack.us/img232/446/picture5cls.png

编辑: 这是HTML

我想把它解析成一系列哈希.例如,:

schedule[0]['NEW HAVEN'] == '4:12AM'
schedule[0]['Travel Time In Minutes'] == '95'
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何想法?Perl有HTML :: TableExtract,我认为它可以完成这项工作,但我找不到任何类似的Ruby库.

Mik*_*use 5

您可能想尝试Hpricot(gem install hpricot,通常sudo用于*nix系统)

我把你的HTML放入input.html,然后运行:

require 'hpricot'

doc = Hpricot.XML(open('input.html'))

table = doc/:table

(table/:tr).each do |row|
  (row/:td).each do |cell|
    puts cell.inner_html
  end
end
Run Code Online (Sandbox Code Playgroud)

对于第一行,它给了我

<span class="black">12:17AM </span>
<span class="black">
    <a href="http://www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span>
<span class="black">1:22AM  </span>
<span class="black">
    <a href="http://www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span>
<span class="black">65</span>
<span class="black">TRANSFER AT STAMFORD (AR 1:01AM & LV 1:05AM)                                                                            </span>
<span class="black">

 N


</span>
Run Code Online (Sandbox Code Playgroud)

所以我们已经了解了TD标签的内容.还有一点工作,你就在那里.

(顺便说一句,HTML看起来有点格格不入:你有<th>标签<tbody>,这似乎有点反常:<tbody>如果它只是另一个级别,那就毫无意义<table>.如果你的<tr><th>...</th></tr>东西在表格的一个单独的<thead>部分,那就更有意义但它当然可能不是"你的"HTML!)