我想将一个简单的表解析为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库.
您可能想尝试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!)