我正在申请解析任何网站的html内容,但今天我找到了我的实施例外。 我试图从这个网址获取内容:http://tomfishburne.com/2014/09/socialmedia.html我总是遇到以下错误:java.io.IOException:服务器返回HTTP响应代码:403。我使用的是JSOUP库。我尝试了没有Jsoup选项的其他2个选项但是没有成功。此页面可从浏览器访问,但不能从java访问。你能帮忙提一些建议吗?
由于
Document doc;
String url = "http://tomfishburne.com/2014/09/socialmedia.html";
try {
Response response = Jsoup
.connect(url)
.ignoreContentType(true)
.userAgent(
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
.timeout(12000)
.followRedirects(true).execute();
doc = response.parse();
} catch (Exception e) {
try {
doc = Jsoup.connect(url)
.userAgent(
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0")
.get();
} catch (IOException e1) {
try {
URL url2 = new URL(url);
HttpURLConnection conn = (HttpURLConnection) url2
.openConnection();
conn.setRequestProperty(
"User-Agent",
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36");
BufferedReader in;
in = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "UTF-8"));
} catch (UnsupportedEncodingException e2) {
} catch (IOException e2) {
//This exception is always thrown because of 403 error code
}
}
}
}
答案 0 :(得分:0)
您可以做的是将ignoreHttpErrors(true)
添加到您的调用中,例如:
Document document = Jsoup.connect(url)
.userAgent('Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0')
.ignoreHttpErrors(true)
.get()
事实证明,即使您从网络浏览器访问它,该网站也始终返回403 Forbidden - 例如,您可以在Firebug中看到它。
我已经创建了一个正在运行的Groovy脚本 - https://gist.github.com/wololock/1a002dfaff5d49d14871它运行良好。