如何解决org.jsoup.HttpStatusException:获取URL的HTTP错误。状态= 503
问题描述:
Iam试图下载我通过以下代码存储在Google学者列表中的研究论文,我已经测试了20+次程序,大约一个小时前,我再次测试它,并且此错误弹出。此代码是我的BS最后一年项目的一部分,我需要解决这个问题。我搜索了这个错误,并且尝试了很多东西。我需要帮助来克服这一点。如果我改变了我的IP,这个问题会解决吗?如何解决org.jsoup.HttpStatusException:获取URL的HTTP错误。状态= 503
Scanner s = new Scanner(new File("E:\\ref11.txt"));
ArrayList<String> list = new ArrayList<String>();
while (s.hasNextLine()){
list.add(s.nextLine());
{
for (String Z : list)
{
System.out.println(Z);
}
}
}
//System.out.println("LISTZ:" +list);
s.close();
for (String query : list)
try {
//var a= doc.replace(" ","+");
Document doc = Jsoup
.connect("https://scholar.google.com.pk/scholar?q=" +query).timeout(30000).followRedirects(true)
.maxBodySize(1024*1024*3)
.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
.get();
String title = doc.title();
System.out.println("title : " + title);
Elements links = doc.select("div.gs_ggsd").select("a[href]");
//Element = doc.select("div.gs_ggs gs_fl").first();
for (Element link : links) {
//System.out.println("\nlink : " + link.attr("href"));
URL website = new URL(link.attr("href"));
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("D:\\Referenced Papers\\" +title);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
// System.out.println("text : " + link.text());
}
/* ByteArrayOutputStream href = new ByteArrayOutputStream();
PrintStream PS = new PrintStream(href);
PrintStream old = System.out;
System.setOut(PS);
System.out.println("Here: " + href.toString());*/
catch (IOException e) {
e.printStackTrace();
}
答
由于Google针对这些查询运行自动查询,您的速度受到限制。
服务通常会跟踪IP和节流请求(此处显示为503 Overloaded
,有时以429 Too Many Requests
或403 Forbidden
表示)或阻止这些请求。
请注意遵循您正在使用的网站的服务条款。