2013-02-28 77 views
3

好吧,我被要求监视几个约10-20个网站的任何变化。
我一直在试图获取这些网站的标题信息,并使用这种方法检查他们的最后更新时间。监控页面的更改吗?

url = new URL("http://www.wikipedia.org/"); 
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection(); 
System.out.println("Connection established"); 
httpConnection.setRequestMethod("HEAD"); 
httpConnection.connect(); 
long lastModified = httpConnection.getLastModified(); 
if(lastModified != 0) { 
    System.out.println(new Date(lastModified)); 
} else { 
    System.out.println("Last-Modified not returned"); 
} 
httpConnection.disconnect();` 

但是,这种方法的问题是,一些网站(很多)不把完整的头信息。我也想知道这是向服务器发出头部请求的正确方式还是我错过了什么?

有没有其他的方式来监控一个网站?
我一直在将整个网站转换为md5值,然后监控网站,但这种方法过于敏感,即使是最小的变化也会通知我。

回答

1

如果服务器没有提供准确的最后修改标题,则由您来计算网站何时发生变化。您将不得不经常在一段时间内检索网页并自行检查更改。即使是最小的变化,md5总和也确实很敏感 - 也许你可以找出一个对变化不太敏感的选择。也许该网站使用HTML表格来显示出价帖子,并且您可以统计表格的行数。

也许您可以在右上角做一些涉及“点击此处获得有关新投标信息的通知”? :)

注意:如果您正在接受完整网络响应的md5总和,那么您也可能是md5'ing头部数据,这很可能会改变。也许如果你在没有标题数据的情况下使用html的md5总和,你可以准确地监视页面何时改变。只是一个建议 - 我不想为你解决你的任务,如果你正在付钱:)

附加说明:我看到你有自己的代码请求网页 - 我觉得我必须建议你使用许多现有的java web crawler libraries中的任何一个。该代码可能会变得更加可靠并且更容易处理。

+0

哈哈感谢队友......我想我只会在页面的body/content部分MD5中看看它的效果。 – haedes 2013-02-28 10:34:22