【问题标题】:Monitoring a pages for changes?监控页面的变化?
【发布时间】:2013-02-28 09:49:02
【问题描述】:

嗯,我被要求监视大约 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 值,然后监控站点,但是这种方法太敏感了,即使是最小的也会通知我变化。

【问题讨论】:

    标签: java web-crawler


    【解决方案1】:

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

    也许您可以做一些涉及右上角的“单击此处以获取有关新投标发布的通知”的操作? :)

    注意:如果您正在获取完整 Web 响应的 md5 总和,则您也可能是 md5'ing 标头数据,这很可能会发生变化。或许如果你拿不带header数据的html的md5和,就能准确的监控到页面何时发生变化。只是一个建议——如果你得到报酬,我不想为你解决你的任务:)

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

    【讨论】:

    • 哈哈,谢谢伙计...我想我只会对页面的正文/内容部分进行 md5 处理,然后看看它的效果如何......
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 2010-12-14
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2011-03-10
    相关资源
    最近更新 更多