获取整个HTML代码 - Java?

时间:2016-09-04 10:55:49

标签: java html url

我想编写一个代码从网站上打印出整个html代码,这样我就可以获得有关某个玩家的信息。我现在的问题是:

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


public class DownloadPage {

public static void main(String[] args) throws IOException {


    URL url = new URL("http://apps.runescape.com/runemetrics/app/levels/player/Gragoyle");

    URLConnection con = url.openConnection();
    InputStream is =con.getInputStream();

    BufferedReader br = new BufferedReader(new InputStreamReader(is));

    String line = null;

    // read each line and write to System.out
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
}
}

当我运行此代码时,它只打印概述:

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.8.0</center>
</body>
</html>

如果您能解释我如何打印整个HTML代码以及我做错了什么,我将非常感激。

1 个答案:

答案 0 :(得分:1)

三个问题:

  1. http://apps.runescape.com/runemetrics/app/levels/player/Gragoyle获得的是重定向到https://apps.runescape.com/runemetrics/app/levels/player/Gragoyle。此重定向用于强制用户通过HTTPS进行连接。

  2. 如果您尝试从https://apps.runescape.com/runemetrics/app/levels/player/Gragoyle获取数据,您将获得SSL例外。您可以在StackOverflow question上看到有关它的更多信息。如果您解决了这个问题(例如,通过接受所有证书,不建议在制作中使用),您将获得HTML文件,但它不会有用,因为它上面没有播放器数据。

  3. 您实际想要获取的数据是通过Javascript和AJAX调用检索的。这对您来说是一个很好的信息,因为如果您解决SSL问题,可以通过调用fe获取播放器数据作为JSON文件。

  4. https://apps.runescape.com/runemetrics/profile/profile?user=Gragoyle&activities=20

    然后你可以使用任何JSON解析器fe。 Gson轻松获取您想要的值。

    注意:要以简洁易读的形式查看JSON文件,您可以使用this site或浏览器的某些插件,例如Chrome JSONView