Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用CasperJS提取表元素_Javascript_Css Selectors_Casperjs - Fatal编程技术网

Javascript 用CasperJS提取表元素

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&

我想使用CasperJS将连续(内部)HTML字段从表中提取到列表中。我知道从表中提取连续的元素属性很容易,但我不知道如何提取连续的HTML字段

为了演示,这里有一个简单的HTML表:

<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();