如果网页已更新,则发出警报

时间:2011-09-17 09:34:21

标签: java httpwebrequest http-headers httpurlconnection urlconnection

我是一个用Java检测网页是否已更新的应用程序。

然而,有些网页没有“上次修改”标题。

我甚至尝试检查内容长度的变化,但这种方法不可靠,因为有时内容长度会在网页中没有任何修改的情况下发生变化,从而产生误报。

我真的需要一些帮助,因为我无法想到一个简单的方法。

任何想法???

3 个答案:

答案 0 :(得分:1)

最可靠的选择可能是存储页面争用的哈希值。

答案 1 :(得分:1)

如果您说内容长度发生了变化,那么您尝试检查的网页可能是动态生成的,或者不是静态的。如果是这种情况,那么即使你检查'last-Modified'标题,它也不会反映大多数情况下内容的变化。 我想唯一的解决方案是专门针对特定页面的页面特定解决方案,您可以解析的一个页面以及在此页面的某些部分中查找内容更改,您可以通过上次修改的标题检查另一个页面以及其他一些页面必须检查使用内容长度,在我看来,没有办法在统一模式下为互联网上的所有页面。另一个选择是与开发您正在检查的页面的人交谈,以帮助您确定页面是否发生变化,但这当然取决于您的具体用例以及您正在使用它做什么。

答案 2 :(得分:1)

如果您将整个时间连接到网页,就像这段代码一样,它可以提供帮助:

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");
            }
        }
    }
}

How to get notified after a webpage changes instead of refreshing?