Javascript 用CasperJS提取表元素
我想使用CasperJS将连续(内部)HTML字段从表中提取到列表中。我知道从表中提取连续的元素属性很容易,但我不知道如何提取连续的HTML字段 为了演示,这里有一个简单的HTML表:Javascript 用CasperJS提取表元素,javascript,css-selectors,casperjs,Javascript,Css Selectors,Casperjs,我想使用CasperJS将连续(内部)HTML字段从表中提取到列表中。我知道从表中提取连续的元素属性很容易,但我不知道如何提取连续的HTML字段 为了演示,这里有一个简单的HTML表: <html> <head></head> <body> <table> <tbody> <tr><td name="a">1</td><td>hop&
<html>
<head></head>
<body>
<table>
<tbody>
<tr><td name="a">1</td><td>hop</td></tr>
<tr><td name="b">2</td><td>skip</td></tr>
<tr><td name="c">3</td><td>jump</td></tr>
</tbody>
</table>
</body>
</html>
正如代码中所述,我知道如何使用casper.getElementsAttribute()
提取所有td[name]字段。但我还没有找到一种直接的方法从表中给定的列中提取内部HTML。有什么建议吗
旁白:我一直在做的是一次提取一个元素,使用一个索引进行迭代,使用看起来像
表tr:nth child(“+index+”)td:nth child(2)
的CSS,但这感觉相当痛苦。我希望能找到更简单的解决方案。这里有一个解决方案,大量借鉴了casper对getElementsAttribute()的定义:
另一种解决方案是获取td info对象,然后从该对象获取文本:
//get hop - 2nd td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(2)');
tdTwoObjectText = tdObject.text.trim();
//get skip - 4th td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(4)');
tdFourObjectText = tdObject.text.trim();
//get jump - 6th td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(6)');
tdSixObjectText = tdObject.text.trim();
// print the list '["hop", "skip", "jump"]'
casper.then(function a2() {
var verbs = casper.evaluate(function () {
return [].map.call(__utils__.findAll('table tr td:nth-child(2)'), function (e) { return e.innerHTML; });
});
console.log(JSON.stringify(verbs, null, 2));
});
//get hop - 2nd td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(2)');
tdTwoObjectText = tdObject.text.trim();
//get skip - 4th td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(4)');
tdFourObjectText = tdObject.text.trim();
//get jump - 6th td in DOM
var tdObject = this.getElementInfo('tr td:nth-of-type(6)');
tdSixObjectText = tdObject.text.trim();