Невозможно получить любой HTML-код с сайта с помощью jsoup - PullRequest
0 голосов
/ 26 сентября 2019

Я новичок в форуме.Я не могу найти серьезный сайт поддержки программирования в моей стране, поэтому я попробую свою удачу здесь.У меня проблемы с получением исходного кода HTML с точного сайта: http://www.meteoam.it/ta/previsione/110/magenta

Я использую этот код:

  Document document2 =Jsoup.connect("http://www.meteoam.it/ta/previsione/110/magenta").userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").get();
                            Elements temp2 = document2.select("div.tab-content");
                            html = "";
                            i = 0;
                            for (Element movielist : temp2) {
                                i++;
                                html = (i + "|||" + movielist.getElementsByTag("td").html());
                                array3b[i] = html;
                            }

Я хотел бы получить информацию о температуре между:

<div class="tab-content">
<tr>INFO</tr>
<div>

Странно то, что я не могу получить код с этого сайта.Может ли кто-нибудь помочь мне хотя бы проверить, имеет ли этот сайт какую-то защиту?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы выбираете слишком много ячеек таблицы.Значения, которые вы хотите, есть, но их трудно найти.Вы можете создать лучший селектор CSS, чтобы соответствовать только ячейкам таблицы, которые вы хотите.Попробуйте этот код.Объяснение в комментариях:

        Document document2 = Jsoup.connect("http://www.meteoam.it/ta/previsione/110/magenta")
                .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").get();
        /* after analyzing HTML of this page I see we can find table by id "oggi" and get all TD cells */
        Elements tableCells = document2.select("div#oggi td");
        /* I see you want to keep the values in an array so I'm creating
           an array of the size matching amount of table cells found */
        String[] values = new String[tableCells.size()];
        int i = 0;
        for (Element td : tableCells) {
            /* putting each cell text into the array */
            values[i++] = td.text();
        }
        /* display collected values */
        System.out.println("TEMP " + values[2]);
        System.out.println("UMIDITÀ " + values[3]);
        System.out.println("VENTO " + values[4]);
        System.out.println("RAFFICHE " + values[5]);

...