[英]How to parse/map an html data table to a JSON object using CasperJS?
If I have a table with multiple rows and columns like: 如果我有一个包含多个行和列的表,例如:
<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>
I'm a little stumped on what CasperJS tools I should be using since I'm pretty sure I can't load any kind of parser or jQuery. 我对应该使用什么CasperJS工具感到有些困惑,因为我敢肯定我无法加载任何类型的解析器或jQuery。 I'd like to end up with a JSON object I can POST to a location, kinda like this: 我想最后得到一个JSON对象,可以将其发布到某个位置,如下所示:
{
'vin': '3VW637AJ3VINNUMBEr',
'make': 'Volkswagen',
'year': 2014
// etc
}
How do I go about doing this in CasperJS? 我该如何在CasperJS中执行此操作?
CasperJS doesn't provide much help here. CasperJS在这里没有提供太多帮助。 You will need to traverse the tree yourself. 您将需要自己遍历树。 It's a good thing that DOM functions are quite capable. DOM功能非常强大是一件好事。 You will need to do this in the page context: 您将需要在页面上下文中执行此操作:
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));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.