【问题标题】:Get a page's last modified date using Java使用 Java 获取页面的最后修改日期
【发布时间】:2011-05-02 21:27:42
【问题描述】:

是否有标准的方法来判断页面的最后修改时间?目前我正在这样做:

URLConnection uCon = url.openConnection();
uCon.setConnectTimeout(5000);   // 5 seconds
String lastMod = uCon.getHeaderField("Last-Modified");
System.out.println("last mod: "+lastMod);

不过,有些网站似乎没有Last-Modified 字段。

http://www.cbc.ca 有这些头域:

X-Origin-Server
Connection
Expires
null
Date
Server
Content-Type
Transfer-Encoding
Cache-Control

我可以解析一个页面来尝试获取它的日期,但这似乎是一个很大的痛苦。标准是什么?

(如果可能的话,我想坚持使用 URLConnection,因为我用它来下载网页)

【问题讨论】:

    标签: java date webpage


    【解决方案1】:

    来自HTTP/1.1: Header Field Definitions

    14.29 上次修改

    Last-Modified 实体头字段 表示日期和时间 源服务器相信变体 上次修改。

       Last-Modified  = "Last-Modified" ":" HTTP-date
    

    它的一个使用例子是

       Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
    

    这个头域的确切含义 取决于执行情况 源服务器和性质 原始资源。对于文件,它可能 只是最后修改的文件系统 时间。对于具有动态的实体 包括的部分,它可能是最 最近的一组最后修改时间 为其组成部分。对于数据库 网关,它可能是最后一次更新 记录的时间戳。对于虚拟 对象,这可能是最后一次 内部状态改变了。

    源服务器不得发送 Last-Modified 日期晚于 服务器的消息时间 起源。在这种情况下,如果 资源的最后修改将 表明在未来的某个时间, 服务器必须将该日期替换为 消息发起日期。

    源服务器应该获取 实体的 Last-Modified 值为 尽可能接近它的时间 生成其日期值 回复。这允许收件人 做出准确的评估 实体的修改时间,尤其是 如果实体在时间附近发生变化 响应已生成。

    HTTP/1.1 服务器应该发送 Last-Modified 只要可行。

    从此Last-modified 是可选的,其值取决于原始资源的性质。

    【讨论】:

      【解决方案2】:

      没有标准。动态生成的网页一般没有 Last-Modified 字段,不同的网页包含日期的方式也不同。有些网站甚至不包括这样的日期,包括底部的“© ”。您可以尝试在底部或顶部附近查找日期,但可靠从网页中提取日期必须是特定于站点的。

      【讨论】:

      • 呵呵,我也是这么想的。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2018-09-13
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多