如何使用CasperJS将html数据表解析/映射到JSON对象
How to parse/map an html data table to a JSON object using 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>
<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工具,因为我很确定我不能加载任何类型的解析器或jQuery。我想最终得到一个JSON对象,我可以将其发布到一个位置,有点像这样:
{
'vin': '3VW637AJ3VINNUMBEr',
'make': 'Volkswagen',
'year': 2014
// etc
}
如何在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));
});
相关文章:
- JSON:获取映射数据
- 使用javascript在数组中迭代和映射JSON
- 如何将 JSON 对象映射到 ng-repeat 中的折叠行
- 陷入Json,无法使用敲除映射控件将Bindings应用于数据
- 使用json将infoWindow添加到映射标记中
- 将JSON映射到observableArray时出错
- JSON到数据表的映射
- 如何将这个Json映射到Handlebars js
- 通过Javascript中的递归迭代映射嵌套JSON
- Knockout映射:JSON在多次映射和保存时会增长
- 映射 JSON 返回为 FullCalendar jQuery 库可用
- 映射 Json 数据并添加数据属性
- Bing 映射 JSON 不使用 JSON.parse 进行解析
- 是否有返回javascript树映射json内部其他数据的方法
- 使用knockout映射JSON无法填充类型定义的对象属性
- 弹性搜索:我如何映射json数据具有动态数量的字段
- 映射Json Array的值
- 使用jackson映射JSON对象
- Jersey映射json数组
- 映射JSON结构