![](/img/trans.png)
[英]How to scrape JavaScript rendered data from a website using Scrapy?
[英]Scrape a website (javascript rendered) by HTTP XML Request using Java (on Eclipse)
我正在尝试用Java抓取一个网站,以从一个表中提取一些百分比,这就是这个表。
这些百分比在处理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>
显然,我想获取“ 61%| 25%| 14%”字符串,以及表中其余的百分比...
好吧,事实上,是的,它是由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 Developer虚拟机中来获取百分比,是的,我得到了我想要的:一组元素,其中包含程序所需的数据。
问题是我不知道该如何告诉Java对XML Http Request进行编码,然后获取此数据。 您为此推荐什么库?在这种情况下,我该如何具体使用它们?
在Java中,您将像获取其他HTML页面一样将GET URL称为“ / vote / percentage”,然后解析返回的JSON结果。 这样做的方法有很多-看起来您已经在这样做(获取要抓取的URL的HTML页面),因此您可以使用相同的方法来获取此URL。
调用此GET URL以获取JSON和调用URL以获取HTML的唯一区别是返回的数据格式。 前者返回JSON,后者返回HTML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.