【问题标题】:Reading dynamic web page content in java在java中读取动态网页内容
【发布时间】:2012-04-09 14:10:13
【问题描述】:

我在阅读网页内容时需要帮助。目前我正在使用以下方法读取内容

BufferedReader in = new BufferedReader(new InputStreamReader(page.openStream())); 
String inputLine;
while ((inputLine = in.readLine()) != null)
{Content = Content + inputLine;}

但是,这种方法存在一个问题。 .一些jsp页面中有ajax,它会随机更新网页的css类,就像这样 Javascript代码只是为了给出一个想法:

if (request.readyState === 4 && request.status === 200) 
{
var type = request.getResponseHeader("Content-Type");
$('.update').empty();
$('.update').append(request.responseText); //update the css class
}

因此,当通过上面提到的我的 java 方法读取此页面阅读器时,我就得到了

<div class="update"></div>

虽然在屏幕上这个类有一个值。 但是,现在如果我先保存页面(通过在 Firefox 中单击另存为),那么 jquery 在 CSS 类中附加的值也是可见的。 有没有一种方法或方法可以让我读取值或通过保存页面来获取像 firefox 一样的值。我想读取整个网页的内容以及字符串中存在的 Ajax 值。

一方面,我读到这很困难,因为 JAvascript 由浏览器渲染和执行,所以我想知道 firefox 是否有任何可能有帮助的 api?任何建议将不胜感激。

【问题讨论】:

  • 您将不得不渲染网页,而不仅仅是使用 StreamReader 读取它。谷歌搜索“Java 中的 Web 渲染”(不带引号),看看你是否找到了可以使用的东西。

标签: java javascript jquery webharvest


【解决方案1】:

您可能会发现以下项目很有用:

这也是来自 Data Big Bang 的 very informative blog post

【讨论】:

  • 感谢您的精彩回复,看来 HTMLUnit 正是我所需要的,它听起来很有希望,但还没有使用它。
【解决方案2】:

还可以查看PhantomJS。就像 Crowbar 是无头 Mozilla 浏览器一样,PhantomJS 是无头 WebKit 浏览器 - Safari 和 Google Chrome 使用的引擎。

【讨论】:

  • PhantomJS 看起来很迷人,很适合我的需要
猜你喜欢
  • 2019-01-13
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多