@knagornykh

Почему иногда данные получаю а иногда нет, хотя код не меняю?

Хочу получить данные погоды с этой страницы: https://www.google.com/search?client=opera&q=погод...

public class Parser2 {

    public static void main(String[] args) throws IOException {
        Parser2 parser = new Parser2();
        System.out.println(parser.valueList());
        System.out.println(parser.allPrintConsole());
    }

    static Elements getPage() throws IOException // возвращает всю таблицу с погодой
    {
        String url = "https://www.google.com/search?client=opera&q=погода+довск&sourceid=opera&ie=UTF-8&oe=UTF-8";
        Document page = Jsoup.connect(url).get();
        Elements tableWth =page.select("div[class=nawv0d vk_c]"); // вся таблица с погодой

        return tableWth;
    }

    public ArrayList<String> allPrintConsole() throws IOException
    {
        Elements tableWth = getPage();

        String weekData = tableWth.select("div[class=wob_dts vk_gy vk_sh]").text(); // ячейка дата с временем
        String temp = tableWth.select("span[class=wob_t TVtOme]").text(); //кол-во градусов, можно будет взять для: от до
        String whater = tableWth.select("span[id=wob_hm]").text();
        String weter = tableWth.select("span[id=wob_ws]").text();

        ArrayList<String> print = new ArrayList<>(); //тут храняться данные
        print.add(weekData);
        print.add(temp+"°С");
        print.add(whater);
        print.add(weter);

        return print;

    }

    public static   ArrayList<String> weekList() throws IOException {

        Elements peek = getPage().select("div[class=wob_dfc]");

        String[] weekName = peek.select("div[class=QrNVmd Z1VzSb]").text().split(" "); // дни недели

        ArrayList<String> week = new ArrayList<>();

        for (int i = 0; i < weekName.length; i++) {
            week.add(weekName[i]); // week.size() = 8
        }
        return week;
    }

    public ArrayList<String> valueList() throws IOException {

        Elements peek = getPage().select("div[class=wob_dfc]");

        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < 32; i+=2) {
            String first = peek.select("span[class=wob_t]").get(i).text();
            list.add(first); //list.size() = 16
        }
        return list;
    }
}


Иногда данные выводятся, а иногда нет, код при этом не меняю
6021591bda01d377016263.png
602159275d9dc931577076.png
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
Первое, что скажу я это то, что не очень-то хорошая идея для получения прогноза погоды использовать парсер (Jsoup или любой другой).
Используйте API сервисов предназначенных для этого. Например, OpenWeatherMap

Далее ответ на ваш вопрос:
Почему иногда данные получаю а иногда нет, хотя код не меняю?

Может быть вы и не меняете код написанный вами, но сама страница (DOM) сайта может измениться из-за чего вы наблюдаете ошибку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы