我刚刚开始使用Elive进行HTML屏幕抓取任务。如果我想要来自下表的第二个和第四个TD节点的文本,我将如何指定选择器?我仔细阅读了教程,但没有找到如何在XPath中指定内容的示例:
html / body / table / 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 :(得分: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")