Оповещение, если веб-страница была обновлена - PullRequest
1 голос
/ 17 сентября 2011

Я создал приложение на Java, которое проверяет, была ли обновлена ​​веб-страница.

Однако некоторые веб-страницы не имеют заголовка "Last Modified".

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

Мне действительно нужна некоторая помощь, поскольку я не могу придумать ни одного надежного метода.

Есть идеи ???

Ответы [ 3 ]

1 голос
/ 17 сентября 2011

Если вы говорите, что длина контента изменяется, то, вероятно, веб-страницы, которые вы пытаетесь проверить, генерируются динамически и не имеют статического характера.Если это так, то даже если вы проверите заголовок 'last-Modified', он в любом случае не будет отражать изменения в контенте.Я предполагаю, что единственным решением будет решение для конкретной страницы, работающее только для конкретной страницы, одна страница, которую вы можете анализировать и искать изменения содержимого в некоторых частях этой страницы, другая страница, которую вы можете проверить по последнему измененному заголовку, и некоторые другие страницы, которые вы бы сделалиприходится проверять с помощью длины контента, на мой взгляд, нет способа сделать это в унифицированном режиме для всех страниц в интернете.Другой вариант - поговорить с людьми, разрабатывающими страницы, которые вы проверяете, на наличие маркеров, которые помогут вам определить, изменилась ли страница или нет, но это, конечно, зависит от вашего конкретного варианта использования и от того, что вы делаете с ним.

1 голос
/ 12 марта 2017

Если вы все время подключаетесь к веб-странице, как этот код, это может помочь:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class main {

    String updatecheck = "";

    public static void main(String args[]) throws Exception {

        //Constantly trying to load page
        while (true) {

            try {
                System.out.println("Loading page...");

                // connecting to a website with Jsoup
                Document doc = Jsoup.connect("URL").userAgent("CHROME").get();

                // Selecting a part of this website with Jsoup
                String pick = doc.select("div.selection").get(0);

                // printing out when selected part is updated.
                if (updatecheck != pick){
                updatecheck = pick;
                System.out.println("Page is changed.");
                }

            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("Exception occured.... going to retry...  \n");
            }
        }
    }
}

Как получить уведомление после изменения веб-страницы вместо обновления?

1 голос
/ 17 сентября 2011

Вероятно, наиболее надежным вариантом будет сохранение хеша контекста страницы.

...