一千萬個為什麽

搜索

HPricot css search:如何使用字符串選擇器選擇特定元素的父/祖先?

我正在使用HPricot的css搜索來識別網頁中的表格。這是我正在解析的示例html片段:

<table height=61 width=700>
<tbody>
<tr>
<td>Some header text</td></tr>
 ...
</tbody></table>

頁面中有很多表格。我想找到包含 A Name = a1 引用的表。 現在,我正在做的方式是

(page/"a[@name=a1]")[0].parent.parent.parent.parent.parent

我不喜歡這個因為

  • 很難看
  • 容易出錯(如果維護網頁的人刪除了這個?)

有沒有辦法告訴hpricot讓我得到指定元素的表祖先?

Edit: Here's the full blown page I'm parsing: http://www.blonnet.com/businessline/scoboard/a.htm

我感興趣的是兩個表,一個是季度結果,另一個是年度結果。現在,我正在提取這些表的方式是找到並從那裏向上移動。

最佳答案

羅伊斯是對的。它很醜陋並且容易出錯(比需要更多)。再次正如他所說的那樣,意圖說“找到最近的父母就是一張桌子”就更清楚了,這可以用於任何孩子/父母的關系。

如果用hpricot“不可能”這樣做,那就這麽說吧。但是,不要只是說“無論如何都試圖做到這一點是沒有希望的”。這是一個虛假的答案。它也沒有幫助下一個人(我自己)尋找相同問題的答案,但出於不同的原因,這解析了許多頁面,其中差異被假定而不僅僅是擔心。

要真正回答這個問題......我還不知道。而且我沒有太多希望找到hpricot。文檔絕對不可能存在。

但這是一個關於同樣事情的解決方法。

table = (page%"a[@name=a1]").parent
table = table.parent while table.name != "table"

轉載註明原文: HPricot css search:如何使用字符串選擇器選擇特定元素的父/祖先?