我正在尝试用Java抓取一个网站,从表中提取一些百分比,即this one。
在处理HTML源代码后呈现这些百分比。所以我们可以知道这些元素是通过Javascript渲染的,这使得刮得更难(操作,问题)
所以这是渲染之前元素之间的区别:
<div class="user_forecasts" id="57464" />
在渲染之后:
<div class="user_forecasts" id="57464"> <b>1</b>
<div class="percents">61% | 25% | 14%</div>
</div>
显然,我想获得&#34; 61%| 25%| 14%&#34;字符串,以及表格中的其余百分比...
嗯,事实上,是的,它是由 Javascript 呈现的,我找到了.js文件,幸运的是我找到了有趣的部分:
// ajax user_forecast load - one call
if ($('div.user_forecasts').length > 0) {
$.ajax({
url: '/vote/percentage',
global: false,
type: 'GET',
data: {
a: $('#jornadaq').val()
},
success: function(percentages) {
perc_obj = eval(percentages);
$('div.user_forecasts').each(function(ind, val) {
if (ind == 14) {
$(this).html("<b>" + perc_obj[ind].value + "</b><div class='percents'>" + perc_obj[ind].porcent + "%" + "</div>");
} else {
$(this).html("<b>" + perc_obj[ind].forecast + "</b><div class='percents'>" + perc_obj[ind].local + "% | " + perc_obj[ind].tie + "% | " + perc_obj[ind].visitor + "%" + "</div>");
}
});
}
});
}
如您所见,它是一个AJAX调用。我检查了是否可以通过将此代码粘贴到Chrome开发人员虚拟机中来获得百分比,是的,我得到了我想要的内容:包含我的程序所需数据的元素组。
请查看this ScreenShot (Chrome Developer Virtual Machine)
问题是我不知道如何告诉Java编写此XML Http请求然后获取此数据。您为此推荐了哪些库,以及如何在这种情况下特别使用它们?
答案 0 :(得分:0)
从java中,您可以调用GET URL“/ vote / percentage”,就像获取任何其他HTML页面一样,并解析返回的JSON结果。有很多方法可以做到这一点 - 看起来你已经在做这个(获取一个用于抓取的URL的HTML页面),所以你可以使用相同的方法来获取这个URL。
调用此GET URL以获取JSON,并调用URL获取HTML的唯一区别是返回的数据格式。前者返回JSON,后者是HTML。