2012-06-07 32 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