【问题标题】:Java- How to get the HTML code from a URL including its AJAX generated code using Firebug or any Java libraryJava- 如何从 URL 获取 HTML 代码,包括使用 Firebug 或任何 Java 库生成的 AJAX 代码
【发布时间】:2015-06-15 03:57:37
【问题描述】:

我需要从网络获取代码,部分是“纯 HTML”,部分是使用 AJAX、Javascript 生成的 HTML。

由于获得它的最简单方法似乎是使用 Firebug,我认为它必须存在一种使用 Firebug 或它的某些插件才能从 Java 代码中完成的方法。

我的问题是,在搜索了许多网站和门户之后,我什么也没找到。

任何人都知道某种方式/某个插件...这使得将这个 AJAX 生成的代码与静态 HTML 混合成为可能,就像 Firebug 所做的那样?

谢谢,请原谅我的英语。

【问题讨论】:

  • 我不确定你在问什么。这种解释听起来正确吗?您想使用 Java 加载包含任何动态生成内容的 URL 的内容,如果该 URL 是使用 Web 浏览器加载的,则会生成这些内容?
  • 不完全是;我需要获取返回的代码,即 Firebug,包括使用 AJAX 生成的代码;如果我在一个简单的浏览器中观看代码,而不是使用 AJAX 生成的表格进入 DIV“示例”,我只能看到 DIV,而不是动态生成的代码。 Firebug 也显示了这个 AJAX 生成的代码。
  • 这基本上就是我所说的。当您查看源代码时,您会看到页面的源 HTML,firebug 不会显示 html 的源代码,而是显示 DOM 的当前结构。 AJAX 和 Javascript 会改变 DOM,但 firebug 仍然可以以当前形式向您显示页面的“有效”源代码。
  • 是的,你是对的;我看错了你的答案。

标签: java javascript ajax parsing firebug


【解决方案1】:

Abhijeet 走在了正确的轨道上,但我将花时间解释浏览器如何处理网页,并帮助您了解为什么您的请求如此困难。

警告这很粗略,为了简洁明了,我正在捏造一些细节

浏览器连接到服务器并使用 HTTP 检索您请求的页面。下载该页面后,浏览器会搜索页面中引用的任何其他资源并检索它们。然后它会执行从上到下找到的任何 javascript,包括任何引用的脚本。这个 javascript 可以操作页面,但此时,浏览器并不关心页面的原始源代码,将其内化为 DOM 或文档对象模型。 Javascript 实际上只是在操作这个 DOM,因为 DOM 只是一个树结构,不做任何源代码操作。因此,firebug(或 webkit 检查器)实际上并不显示源代码,它们显示的是 DOM 的当前状态。

你的请求的问题是你想使用一个单独的系统来加载一个 url,然后通过上面的整个过程,不幸的是,这需要你用 Java 实现一个完整的 javascript 引擎。

但是,一切都没有丢失。 HTMLUnit(其他人提到)是一个工作的、无头的浏览器,用 Java 编写,因此您可以将它集成到您​​的程序中。实际上这样做超出了这个答案的范围,但主页是here,API 文档是here

【讨论】:

  • 是的。这就是为什么我最终决定在这里询问它的原因;因为我不明白为什么还没有实现像这样有用的东西,至少没有将它用作库或插件。但它似乎真的不可用。
【解决方案2】:

您可以做到这一点的唯一方法是嗅探所有 GET/POST 请求正在发出的内容。因此,启动 Firebug 并查看正在发出的 GET/POST 请求。

然后您可以使用URLConnection 类在Java 代码中执行此操作。

您也可以尝试使用无头浏览器,例如htmlunit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2017-03-21
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多