如何通过Java从特定HTML页面检索内容
我正在为任何网站解析html内容的应用程序中工作,但今天,我发现我的实现有一个例外。 我试图从这个url获取内容:我总是得到以下错误:java.io.IOException:服务器返回HTTP响应代码:403。我正在使用JSOUP库。我尝试了另外两个没有Jsoup选项的选项,但是没有成功。此页面可从浏览器访问,但不能从java访问。你能帮我提些建议吗 谢谢如何通过Java从特定HTML页面检索内容,java,html-parsing,jsoup,Java,Html Parsing,Jsoup,我正在为任何网站解析html内容的应用程序中工作,但今天,我发现我的实现有一个例外。 我试图从这个url获取内容:我总是得到以下错误:java.io.IOException:服务器返回HTTP响应代码:403。我正在使用JSOUP库。我尝试了另外两个没有Jsoup选项的选项,但是没有成功。此页面可从浏览器访问,但不能从java访问。你能帮我提些建议吗 谢谢 Document doc; String url = "http://tomfishburne.com/2014/09/so
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
}
}
}
}
您可以做的是将ignoreHttpErrorstrue添加到调用中,例如:
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禁止,即使你从网络浏览器访问它-你可以在Firebug中看到它的例子
我已经创建了一个正在运行的Groovy脚本,它工作得很好。谢谢Szymom。我忘记了这个秘密方法:太好了,我很高兴能帮助你: