繁体   English   中英

使用Java(在Eclipse上)通过HTTP XML Request抓取网站(呈现javascript)

[英]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虚拟机中来获取百分比,是的,我得到了我想要的:一组元素,其中包含程序所需的数据。

请查看此ScreenShot(Chrome开发者虚拟机)

问题是我不知道该如何告诉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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM