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

Java访问http://www.kanas.cz/stranka/jidelna英文版本问题求助

解决访问捷克网站英文版本并获取源码的问题

首先,我帮你分析下这个问题:网站的语言切换通常依赖URL参数或者Cookie来识别用户的语言偏好,你点击按钮跳转报错,大概率是因为按钮的跳转逻辑需要浏览器环境的会话信息(比如Cookie),而你的Java代码直接请求原URL时没有带上这些信息。

下面给你两种可行的解决方案:

方案一:尝试添加语言参数到URL

很多网站支持通过URL参数直接指定语言,比如?lang=en。你可以先手动访问http://www.kanas.cz/stranka/jidelna?lang=en,看看是否能加载英文版本。如果可行,修改你的Java代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class KanasEnglishScraper {
    public static void main(String[] args) {
        String kanEngPageHtml = "";
        // 添加英文语言参数到URL
        String kanEngLink = "http://www.kanas.cz/stranka/jidelna?lang=en";
        
        try {
            URL kanEngUrl = new URL(kanEngLink);
            URLConnection connection = kanEngUrl.openConnection();
            
            // 模拟浏览器请求头,避免被网站拦截
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String line;
            StringBuilder htmlBuilder = new StringBuilder();
            
            while ((line = in.readLine()) != null) {
                htmlBuilder.append(line);
            }
            in.close();
            kanEngPageHtml = htmlBuilder.toString();
            
            // 这里可以处理获取到的英文页面源码
            System.out.println("英文页面源码获取成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方案二:通过Cookie指定语言

如果URL参数无效,那大概率网站是用Cookie存储语言偏好的。你可以按以下步骤操作:

  1. 打开浏览器访问原网站,点击切换英语的按钮
  2. 打开浏览器开发者工具(F12),切换到「Network」标签,找到切换语言时的请求
  3. 查看请求头里的Cookie字段,找到类似lang=en的键值对

然后在Java代码中设置这个Cookie请求头,示例代码如下(用Apache HttpClient更方便处理请求头):

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class KanasEnglishScraperHttpClient {
    public static void main(String[] args) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet request = new HttpGet("http://www.kanas.cz/stranka/jidelna");
            
            // 设置语言Cookie(替换成你从浏览器里看到的实际Cookie值)
            request.setHeader("Cookie", "lang=en");
            // 模拟浏览器User-Agent
            request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
            
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    String kanEngPageHtml = EntityUtils.toString(entity, "UTF-8");
                    // 处理源码
                    System.out.println("英文页面源码获取成功");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键注意点

  • 模拟浏览器请求头:很多网站会拦截非浏览器的请求,所以一定要设置User-Agent字段,模拟真实浏览器的请求。
  • 字符编码:网站是捷克语,可能用UTF-8编码,所以读取流时指定UTF-8避免乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:04:09