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

Android Studio中Jsoup爬取慢加载网页失败求助

解决Jsoup爬取目标网站无结果的问题

可能的原因及对应解决方案

1. 目标网站拦截非浏览器请求(反爬)

多数网站会校验请求的User-Agent字段,拒绝非浏览器发起的请求。当前Jsoup请求未设置该字段,大概率被网站拦截。修改代码添加模拟浏览器的请求头:

Document doc = Jsoup.connect("https://translatekreol.mu/translation.php?&source=enn%20bon%20garson&lang=kreol&boutton=Translate")
        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
        .timeout(60000)
        .get();

2. 错误使用请求方式

观察目标网站的翻译逻辑,实际可能是通过POST提交表单数据,而非直接访问带参数的GET链接。尝试改用POST请求:

Document doc = Jsoup.connect("https://translatekreol.mu/translation.php")
        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
        .data("source", "enn bon garson")
        .data("lang", "kreol")
        .data("boutton", "Translate")
        .timeout(60000)
        .post();

3. Android主线程执行网络请求导致程序停滞

Android禁止在主线程执行网络操作,否则会引发ANR(应用无响应),表现为程序停滞。必须将Jsoup请求放在子线程中执行,以下是两种实现方式:

Java 线程池/普通线程示例

new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Document doc = Jsoup.connect("https://translatekreol.mu/translation.php")
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
                    .data("source", "enn bon garson")
                    .data("lang", "kreol")
                    .data("boutton", "Translate")
                    .timeout(60000)
                    .post();
            final String bodyContent = doc.body().html();
            // 切换到主线程处理结果(如更新UI)
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // 后续业务逻辑
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}).start();

Kotlin 协程示例

CoroutineScope(Dispatchers.IO).launch {
    try {
        val doc = Jsoup.connect("https://translatekreol.mu/translation.php")
                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
                .data("source", "enn bon garson")
                .data("lang", "kreol")
                .data("boutton", "Translate")
                .timeout(60000)
                .post()
        // 切换回主线程处理结果
        withContext(Dispatchers.Main) {
            val bodyContent = doc.body().html()
            // 后续业务逻辑
        }
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

4. 额外反爬机制(如Cookie校验)

如果上述方法仍无效,可能网站需要携带特定Cookie才能访问。先在浏览器中打开目标链接,复制请求头中的Cookie字段,添加到Jsoup请求:

Document doc = Jsoup.connect("https://translatekreol.mu/translation.php")
        .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
        .cookie("your_cookie_key", "your_cookie_value") // 替换为浏览器中获取的Cookie内容
        .data("source", "enn bon garson")
        .data("lang", "kreol")
        .data("boutton", "Translate")
        .timeout(60000)
        .post();

内容的提问来源于stack exchange,提问作者my pc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:52:48