【问题标题】:Load javascript content inside HTML在 HTML 中加载 javascript 内容
【发布时间】:2014-05-01 08:54:33
【问题描述】:

所以,我有一个网页,我想加载并获取一些信息。到目前为止一切顺利,我使用 HttpClient 加载网页,然后使用 Jsoup 加载一些信息。但是问题来了:这个网页的一些内容只是通过 Javascript 加载的,而 Jsoup 没有加载它,因为它不模拟浏览器,它只是一个 HTML Parser。

所以,我开始寻找可以为我做这件事的东西,并找到了 HtmlUnit。这是一个非常好的库,但它似乎与 Android 不兼容,因为它运行起来非常痛苦(有些网站甚至说它与 Android 不兼容,因为它使用了一些 Swing 类)。我还找到了 Selenium 的 Android WebDriver,但它似乎不太好,因为我需要安装一个单独的 APK 才能使其工作,这可能会降低性能。

那么,是否有任何与 Android 兼容的库,例如 Jsoup 或 HtmlUnit,它们可以模拟真实的浏览器,或者我可以给它一个带有 HTML 内容的字符串,它会在其中加载 Javascripts?

提前致谢,如有任何英文错误,我们深表歉意。干杯。

【问题讨论】:

    标签: javascript android html web java


    【解决方案1】:

    坦率地说,除了浏览器本身之外,没有什么可以模拟浏览器。

    您可以找到的任何库都可能适合特定目的,可能评估简单的脚本,但我认为不可能找到通用的解决方案:现代网页的数百万种工作方式可能包括数百个内部和外部 JS 库、DOM 操作、异步请求……实际上,您需要一个完整的浏览器才能使其工作,而不是一个小型库。

    因此,如果您正在寻找通用解决方案,我认为可能的方法是使用WebView - 这确实是一个完整的 HTML5 浏览器 - 加载要在其中提取的网页并尝试提取使用WebView 为您提供的所有交互可能性为您自己提供数据。请注意,您可以使用不可见的WebView 来尝试提取信息。

    请查看WebView 上的文档。您可以使用和覆盖大量函数来控制其工作方式:您可以设置在页面尝试加载脚本、css、文件、拦截调用、替换数据、从 Android 调用 javascript、获取部分内容时调用的钩子网页作为文本或图像...

    http://developer.android.com/reference/android/webkit/WebView.html

    查看函数:evaluateJavaScript、loadData 和您可以使用 setWebChromeClient 设置的 WebChromeClient

    http://developer.android.com/reference/android/webkit/WebChromeClient.html

    这个对象有很多函数可以用来拦截加载页面中发生的任何事情,例如 onJsalert、onJsTimeout、onReceivedTitle,

    还可以查看WebView'ssetWebViewClient,它允许您设置一个WebClient,它还提供了很多钩子,例如onPageFinishedonPageStartedonReceiveError..

    http://developer.android.com/reference/android/webkit/WebViewClient.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2021-06-11
      • 2012-05-13
      • 1970-01-01
      • 2020-05-08
      相关资源
      最近更新 更多