我正在通过jsoup在Java上做一个简单的天气解析器。昨天它工作得很好,但今天我立即得到了错误429(太多的请求,如果我没有错)。这是我的代码,我如何修复它?
public class Parser {
public static void parse() throws IOException {
Scanner scanner = new Scanner(System.in);
String city, temp, hum, wind, status, name, day;
city = scanner.nextLine();
Document doc = Jsoup.connect("https://www.google.com/search?q="+city+" weather").timeout(10*1000).get();
Element tempElem = doc.selectFirst("span.wob_t.q8U8x");
temp = Objects.requireNonNull(doc.selectFirst("span.wob_t.q8U8x")).text();
hum = Objects.requireNonNull(doc.selectFirst("#wob_hm")).text();
wind = Objects.requireNonNull(doc.selectFirst("#wob_ws")).text();
status = Objects.requireNonNull(doc.selectFirst("#wob_dc")).text();
name = Objects.requireNonNull(doc.selectFirst("#wob_loc.q8U8x")).text();
day = Objects.requireNonNull(doc.selectFirst("#wob_dts")).text();
if(tempElem == null){
System.out.println("City's not found");
System.exit(0);
}
System.out.println("Weather in " + name + ". ("+day+", "+status+")"+
"\n Temperature: " + temp + "°C" +
"\n Humanity: " + hum +
"\n Wind speed: " + wind);
}
}
我尝试过将.timeoute()添加到Jsoup.connect(),但没有看到任何结果。
1条答案
按热度按时间bttbmeg01#
你可能已经超过了google的每日搜索请求限制。如果太多的请求从同一个IP发出,它将被阻止。一个解决方案是使用一个天气API,每天允许更多的请求。