我想编写一个代码从网站上打印出整个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代码以及我做错了什么,我将非常感激。
答案 0 :(得分:1)
三个问题:
从http://apps.runescape.com/runemetrics/app/levels/player/Gragoyle
获得的是重定向到https://apps.runescape.com/runemetrics/app/levels/player/Gragoyle
。此重定向用于强制用户通过HTTPS进行连接。
如果您尝试从https://apps.runescape.com/runemetrics/app/levels/player/Gragoyle
获取数据,您将获得SSL例外。您可以在StackOverflow question上看到有关它的更多信息。如果您解决了这个问题(例如,通过接受所有证书,不建议在制作中使用),您将获得HTML文件,但它不会有用,因为它上面没有播放器数据。
您实际想要获取的数据是通过Javascript和AJAX调用检索的。这对您来说是一个很好的信息,因为如果您解决SSL问题,可以通过调用fe获取播放器数据作为JSON文件。
https://apps.runescape.com/runemetrics/profile/profile?user=Gragoyle&activities=20
然后你可以使用任何JSON解析器fe。 Gson轻松获取您想要的值。
注意:要以简洁易读的形式查看JSON文件,您可以使用this site或浏览器的某些插件,例如Chrome JSONView。