2015-04-01 127 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")