Java:can';无法从URL获取html
我正在尝试从URL读取html文件。我的代码适用于大多数网站,但有些网站除外,例如。我想我需要设置java代理还是什么 这是我的密码:Java:can';无法从URL获取html,java,html,url,Java,Html,Url,我正在尝试从URL读取html文件。我的代码适用于大多数网站,但有些网站除外,例如。我想我需要设置java代理还是什么 这是我的密码: try { URL webPage = new URL("http://dota2.gamepedia.com/Dota_2_Wiki"); URLConnection con = webPage.openConnection(); con.setConnectTimeout(5000);
try {
URL webPage = new URL("http://dota2.gamepedia.com/Dota_2_Wiki");
URLConnection con = webPage.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
BufferedReader in = new BufferedReader(
newInputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
catch (MalformedURLException exc){exc.printStackTrace();}
catch (IOException exc){exc.printStackTrace();}
因此:
java.io.IOException: Server returned HTTP response code: 403 for URL: http://dota2.gamepedia.com/Dota_2_Wiki
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at com.Popov.Main.main(Main.java:17)
错误代码403:我如何访问它?顺便说一句,它在浏览器中正常工作您可以简单地尝试使用html解析器
public static void main(String[] args) throws IOException {
Document doc = Jsoup
.connect("http://dota2.gamepedia.com/Dota_2_Wiki")
.userAgent(
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36")
.timeout(0).followRedirects(true).execute().parse();
Elements titles = doc.select(".entrytitle");
// print all titles in main page
for (Element e : titles) {
System.out.println("text: " + e.text());
System.out.println("html: " + e.html());
}
// print all available links on page
Elements links = doc.select("a[href]");
for (Element l : links) {
System.out.println("link: " + l.attr("abs:href"));
}
}
您的问题很可能是因为未正确设置用户代理。给你们这些喜欢香草爪哇的人。这些是代码
private void sendGet() throws Exception {
String url = "http://dota2.gamepedia.com/Dota_2_Wiki";
URL obj = new URL(url);
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
}
请注意,您还需要设置cookie,因为当我在没有cookie的情况下尝试它时,代码将给我许多重定向循环我认为您这里的问题是服务器不接受您的“用户代理”字符串并返回403禁止代码 一个答案建议使用Jsoup并手动设置用户代理,但没有解释设置用户代理是关键步骤。你可以使用这种方法
或者,您可以自己读取并设置URLConnection的用户代理。这种方法不需要任何外部库。没有错误。进程已完成,退出代码为0。如果不将html打印到控制台,就像URL是空的一样。您从哪里知道它。您可以在不记录异常的情况下处理异常。这是一个非常糟糕的编程。是的,对不起,我是一个非常初学者。收到错误代码,编辑的帖子“403禁止”看起来你没有权限打开这个网站。是的,但是为什么我可以用浏览器打开它,这正常吗?谢谢,当然可以,但是我想知道为什么没有外部库它不能工作谢谢,工作很好,现在我得到了它。