我正在机械化宝石中学习Nokogiri,而我在找出用于从html表构建数组的正确选择器时遇到了麻烦。这是我从中提取数据所需的HTML表格:
<table id="propertysearchresults">
<thead>…</thead>
<tbody>
<tr class="prototype_r">
<td class="transparent">…</td>
<td>...</td>
<td> ITEM ONE </td>
<td> ITEM TWO </td>
<td class="location">…</td>
<td> ITEM THREE </td>
<td class="text_right">ITEM FOUR</td>
</tr>
<tr class="prototype_r">
<td class="transparent">…</td>
<td>...</td>
<td> ITEM ONE </td>
<td> ITEM TWO </td>
<td class="location">…</td>
<td> ITEM THREE </td>
<td class="text_right">ITEM FOUR</td>
</tr>
</tbody>
</table>
我想为每行数据构建一到第四项的数组。如果有人可以帮助我的语法,我会很感激。感谢!!!
答案 0 :(得分:1)
假设项目一/二/三/四总是在相同的td索引中,你可以这样做:
# Writing standalone; use Mechanize to fetch if you like
require 'nokogiri'
doc = Nokogiri.HTML( page_html )
data = doc.css('#propertysearchresults > tbody > tr').map do |row|
row.elements.to_a.values_at(2,3,5,6).map(&:text)
end
p data
#=> [
#=> [" ITEM ONE ", " ITEM TWO ", " ITEM THREE ", "ITEM FOUR"],
#=> [" ITEM ONE ", " ITEM TWO ", " ITEM THREE ", "ITEM FOUR"]
#=> ]
这使用CSS表达式来选择行,并为每个行查找子元素(<td>
)作为数组,通过索引提取正确的元素,然后获取text
每个
答案 1 :(得分:0)
Railscasts的这一集确实帮助了我做这些事情,因为他们展示了一个名为SelectorGadget的工具,它可以很容易地找出用于识别目标信息的css选择器。