2015-04-01 164 views
1

我剛開始使用Elive進行HTML屏幕抓取任務。如果我想要下表中第二個和第四個TD節點的文本,我將如何指定選擇器?我閱讀本教程,但沒有找到如何指定的XPath這將是任何例子:使用Enlive匹配一組TD標籤中的特定TD標籤

HTML /體/表/ TR/TD [2]/TD [4](假設一個基於索引)

<html> 
<body> 
<table width="100%" border="0" cellspacing="3" cellpadding="2"> 
    <tr> 
    <td width="15%" class="labels">Part No</td> 
    <td class="datafield">I2013-00007</td> 
    <td class="labels"><div align="right">Parcel No</div></td> 
    <td colspan="3" class="datafield">07-220-12-03-01-2-00-000</td> 
    </tr> 
</table> 
</body> 
</html> 

我需要捕獲這兩個TD節點的文本值。

+0

你爲什麼要閱讀的文本什麼是你確切的問題..? 是否要替換內容或其他用途? – piyushmandovra 2015-04-01 05:03:59

回答

0

您可以使用nth-of-type這樣的:

user> (require '[net.cgrand.enlive-html :as html]) 
nil 
user> (def test-html 
"<html><body><table width='100%' border='0' cellspacing='3' cellpadding='2'><tr><td width='15%' class='labels'>Part No</td><td class='datafield'>I2013-00007</td><td class='labels'><div align='right'>Parcel No</div></td><td colspan='3' class='datafield'>07-220-12-03-01-2-00-000</td></tr></table></body></html>") 
#'user/test-html 
user> (:content (first (html/select (html/html-resource (java.io.StringReader. test-html)) [[:td (html/nth-of-type 2)]]))) 
("I2013-00007")