监控页面是否有变化?

时间:2013-02-28 09:49:02

标签: java web-crawler

我被要求监控几乎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 个答案:

答案 0 :(得分:1)

如果服务器未提供准确的最后修改标头,则由您决定网站何时更改。您将不得不在一段时间内不断检索网页并自行检查更改。即使是最小的变化,md5总和确实很敏感 - 也许你可以找出对变化不太敏感的替代方案。也许该网站使用HTML表格来显示出价过账,您可以计算表格的行数。

也许您可以在右上角执行某些涉及“点击此处以获得有关新出价过帐的通知”的内容? :)

注意:如果您正在获取完整网络响应的md5总和,那么您可能也是md5的头数据,这很可能会发生变化。也许如果您使用没有标题数据的html的md5总和,您可以准确地监控页面何时更改。只是一个建议 - 如果你有报酬,我不想为你解决任务:)

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

相关问题