Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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解析/映射html数据表到JSON对象?_Javascript_Jquery_Html_Css Selectors_Casperjs - Fatal编程技术网

Javascript 如何使用CasperJS解析/映射html数据表到JSON对象?

Javascript 如何使用CasperJS解析/映射html数据表到JSON对象?,javascript,jquery,html,css-selectors,casperjs,Javascript,Jquery,Html,Css Selectors,Casperjs,如果我有一个包含多行和多列的表,如: <tr> <td></td> <td><input class="chkdummyclass" id="105" name="checkBox" type="checkbox" value="true"><input name="checkBox" type="hidden" value="false"></td> <td>94</td>

如果我有一个包含多行和多列的表,如:

<tr>
  <td></td>
  <td><input class="chkdummyclass" id="105" name="checkBox" type="checkbox"
  value="true"><input name="checkBox" type="hidden" value="false"></td>
  <td>94</td>
  <td></td>
  <td>3VW637AJ3VINNUMBEr</td>
  <td>Used</td>
  <td>2014</td>
  <td>Volkswagen</td>
  <td>Jetta Sedan</td>
  <td>Trendline/Comfortline/Highline</td>
  <td>4dr Hybrid TSI DSG Trendline</td>
  <td></td>
  <td class="rightAlign">0</td>
  <td class="rightAlign">
    $22,919.00
  </td>
  <td class="rightAlign">$11,999.00</td>
  <td>Available</td>
  <td>
    0
  </td>
  <td>
    <a href="javascript:;" onclick=
    "javascript:GetVehicleImages(105,0);">0/20</a>
  </td>
  <td class="centerAlign"><img src=
  "/inventory/Configured.png"></td>
</tr>

如何在CasperJS中执行此操作?

CasperJS在这里没有提供太多帮助。你需要自己穿过这棵树。DOM函数非常有能力,这是一件好事。您需要在页面上下文中执行此操作:

casper.then(function(){
    var info = this.evaluate(function(){
        var table_rows = document.querySelectorAll("tr"); //or better selector

        return Array.prototype.map.call(table_rows, function(tr){
            return {
                vin: tr.children[4].textContent,
                make: tr.children[7].textContent,
                year: tr.children[6].textContent
            };
        });
    });
    this.echo(JSON.stringify(info, undefined, 4));
});

CasperJS在这里没有提供太多帮助。你需要自己穿过这棵树。DOM函数非常有能力,这是一件好事。您需要在页面上下文中执行此操作:

casper.then(function(){
    var info = this.evaluate(function(){
        var table_rows = document.querySelectorAll("tr"); //or better selector

        return Array.prototype.map.call(table_rows, function(tr){
            return {
                vin: tr.children[4].textContent,
                make: tr.children[7].textContent,
                year: tr.children[6].textContent
            };
        });
    });
    this.echo(JSON.stringify(info, undefined, 4));
});