2012-06-07 36 views
1

我是一个新手,我试图从表中刮取一些数据,但没有太多运气使用xpath。我可以得到我需要的第一个场地,但是......没有。Nokogiri和xpath提取表数据

每一行的表结构如下:

<tr bgcolor="#FFF7E7"> 
<td valign="Top"><font color="#8C4510"> 
<span id="DataGrid1__ctl3_Label2">Index</span> 
</font></td> 
<td><font color="#8C4510"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl0','')"><font color="#8C4510">Title</font></a></font></td> 
<td><font color="#8C4510"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl2','')"><font color="#8C4510">People</font></a></font></td> 
<td valign="Top"><font color="#8C4510">Date</font></td><td><font color="#8C4510"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl4','')"> 
<font color="#8C4510">Text</font></a></font></td> 
<td><font color="#8C4510"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl6','')"><font color="#8C4510">Outcome</font></a></font></td> 
<td valign="Top"> 
<font color="#8C4510"><a href="javascript:__doPostBack('DataGrid1$_ctl3$_ctl8','')"><font color="#8C4510">Click link for more</font></a></font></td> 
</tr> 

我试图提取索引,名称,人物,文字,结果领域以及链接。 我正在管理提取索引,但似乎无法得到其余的。

在我的ruby代码中,我实际得到表的呼叫似乎正在工作,但是然后我的循环提取表中每行的字段并不是除索引之外的。

任何帮助将是伟大的。

+1

你有一个错字“ahref”应该是“a href”。 –

回答

2

随着摘录你给那里,你可以提取文本,然后用下面的XPath查询链接:

require 'rubygems' 
require 'nokogiri' 

f = File.open('test.html') 
doc = Nokogiri::HTML(f) 

doc.xpath("//tr//td//a").each do |node| 
    puts "#{node.text().strip()}: #{node.attribute('href')}" 
end 
f.close 

但是,没有看到在表中的其他行,不知道这是否是任何帮助其余的部分。

+0

谢谢。这很有帮助。我需要前五个字段的文本以及最后一个(然后我需要点击)的链接,以便我可以调整它。 – marvin