【问题标题】:Downloading html with java not working用java下载html不起作用
【发布时间】:2013-12-02 10:26:41
【问题描述】:

所以我正在尝试从 URL 下载 html 页面;

public static void getHtml(){
    URL url;
    InputStream is = null;
    BufferedReader br;
    String line;

    try {
        url = new URL(URL);
        is = url.openStream();  
        br = new BufferedReader(new InputStreamReader(is));

        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

    }catch(Exception e){

    } finally {
        try {
            if (is != null) is.close();
        } catch (IOException ioe) {

        }
    }
}

问题是,它给我的不是我想要的 HTML,而是以下内容:

<html>
 <head>
  <title>loading</title>
 </head>
 <body>
  <p>Please wait...</p>
       <script>document.cookie="a=3c5hb1488cb3eghv3r456t12234jfyr7g;path=/;";location.href=document.location.pathname;</script>
 </body>
</html>

如何直接下载网页内容?我也尝试了 jsoup 但它给出了相同的结果。也试过 Apache - 一样。

【问题讨论】:

  • 我知道这不是一个答案,但是您必须使用 java 下载网页吗?还有比这更简单的方法
  • 首先尝试不同的网页以确认它不是特定于页面的
  • @Domecraft 我需要解析 html 以获取 js func,所以是的,我必须下载它
  • @ghostbust555 我确定它是特定于页面的。几天前它工作正常,我猜他们在那里改变了smth,但我仍然能够用我的浏览器查看源代码。有没有办法以编程方式做到这一点?

标签: java html


【解决方案1】:

这是我对网站的猜测。

  1. 它将此页面返回给首次访问者
  2. 浏览器设置cookie,并刷新(重定向到相同的url)
  3. 使用 cookie,服务器响应真实内容

所以它适用于浏览器,但不适用于 java。

您可以解析设置的 cookie 脚本并重放它。 "a=3c5hb1488cb3eghv3r456t12234jfyr7g;path=/;"

有关在 url 连接上设置 cookie 的信息,请参阅以下帖子 URLConnection with Cookies?

或者使用 Apache HTTP 客户端 http://hc.apache.org/httpclient-3.x/

【讨论】:

  • 是的,完美的猜测,他们需要cookie然后重定向到主页。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多