java 无法使用Jsoup解析google的网页

bvpmtnay  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(163)

我正在通过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(),但没有看到任何结果。

bttbmeg0

bttbmeg01#

你可能已经超过了google的每日搜索请求限制。如果太多的请求从同一个IP发出,它将被阻止。一个解决方案是使用一个天气API,每天允许更多的请求。

相关问题