You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio(Java)调用API返回HTML不完整,如何获取完整内容?

解决SPA页面HTML内容不完整的问题

目标网站是单页应用(SPA),直接通过HTTP请求获取的只是基础骨架HTML,页面实际内容是由浏览器加载JS后动态渲染生成的,所以普通API请求无法拿到完整内容。以下是两种可行的解决方法:

方案一:使用WebView模拟浏览器渲染(Android端实现)

在Android中利用WebView加载目标页面,等待JavaScript执行完成后,获取渲染后的完整HTML:

WebView webView = new WebView(context);
webView.getSettings().setJavaScriptEnabled(true);
// 设置User-Agent模拟真实浏览器
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        // 页面加载完成后,通过JS获取完整HTML
        view.evaluateJavascript("document.documentElement.outerHTML;", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String html) {
                // 解码转义后的HTML内容
                String decodedHtml = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY).toString();
                // 在这里处理完整的HTML内容
            }
        });
    }
});

webView.loadUrl("https://tienda.mercadona.es/search-results?query=aceite");

注意事项:

  • 在AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" />
  • 避免在主线程中直接操作WebView,建议配合Handler在子线程中使用,防止阻塞UI
  • 部分网站可能有反爬策略,需根据实际情况调整请求头或添加Cookie等信息

方案二:直接调用网站的后台API(更高效)

单页应用通常会通过AJAX/Fetch请求获取数据后再渲染页面,你可以通过浏览器开发者工具分析真实的数据接口:

  1. 打开浏览器开发者工具(F12),切换到「Network」标签
  2. 刷新目标页面,筛选「XHR/Fetch」类型的请求,找到返回商品数据的API接口(通常返回JSON格式)
  3. 在Android中直接调用该API,获取结构化的JSON数据,无需处理HTML解析

这种方式比抓取HTML更高效,数据结构更清晰,也能避免JS渲染的问题。

内容的提问来源于stack exchange,提问作者Nicolas Ortiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:57:32