我正在用 Java 创建一个应用程序,用于检查网页是否已更新。
然而,有些网页没有“最后修改”标题。
我什至尝试检查内容长度的变化,但这种方法并不可靠,因为有时内容长度发生变化而网页中没有任何修改会产生误报。
我真的需要一些帮助,因为我想不出一个万无一失的方法。
有任何想法吗???
我正在用 Java 创建一个应用程序,用于检查网页是否已更新。
然而,有些网页没有“最后修改”标题。
我什至尝试检查内容长度的变化,但这种方法并不可靠,因为有时内容长度发生变化而网页中没有任何修改会产生误报。
我真的需要一些帮助,因为我想不出一个万无一失的方法。
有任何想法吗???
如果您说内容长度发生变化,那么您尝试检查的网页可能是动态生成的,或者本质上不是静态的。如果是这种情况,那么即使您检查“last-Modified”标题,在大多数情况下它也不会反映内容的变化。我想唯一的解决方案是仅适用于特定页面的页面特定解决方案,一个页面您可以解析并查找此页面某些部分的内容更改,另一个页面您可以通过最后修改的标题和其他一些页面进行检查必须检查使用内容长度,我认为没有办法以统一的方式对互联网上的所有页面进行检查。
可能最可靠的选择是存储页面内容的哈希。
如果您像这段代码一样将整个时间连接到网页,它会有所帮助:
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");
}
}
}
}