Хобрук: Ваш путь к мастерству в программировании

Получить дату последнего изменения страницы с помощью Java

Есть ли стандартный способ узнать, когда страница была изменена в последний раз? В настоящее время я делаю это:

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, потому что именно его я использую для загрузки веб-страницы)

30.10.2010

Ответы:


1

Стандарта нет. Динамически созданные веб-страницы обычно не имеют поля Last-Modified, и разные веб-страницы включают даты по-разному. Некоторые сайты даже не включают такую ​​дату, включая «© ‹текущий год›» внизу. Вы можете попытаться найти дату внизу или вверху, но надежное извлечение даты с веб-страницы должно зависеть от сайта.

30.10.2010
  • ага, я тоже так подумал. Спасибо! 30.10.2010

  • 2

    Из HTTP/1.1: определения полей заголовка:

    14.29 Последнее изменение

    Поле заголовка объекта Last-Modified указывает дату и время, когда исходный сервер считает, что вариант был изменен в последний раз.

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

    Примером его использования является

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

    Точное значение этого поля заголовка зависит от реализации исходного сервера и характера исходного ресурса. Для файлов это может быть просто время последнего изменения файловой системы. Для сущностей с динамически включенными частями это может быть самое последнее из набора времени последнего изменения для его составных частей. Для шлюзов базы данных это может быть отметка времени последнего обновления записи. Для виртуальных объектов это может быть последнее изменение внутреннего состояния.

    Исходный сервер НЕ ДОЛЖЕН отправлять дату последнего изменения, которая позже, чем время создания сообщения сервером. В таких случаях, когда последняя модификация ресурса указывает на какое-то время в будущем, сервер ДОЛЖЕН заменить эту дату датой создания сообщения.

    Исходному серверу СЛЕДУЕТ получать значение Last-Modified объекта как можно ближе ко времени, когда он генерирует значение Date своего ответа. Это позволяет получателю сделать точную оценку времени модификации объекта, особенно если объект изменяется незадолго до того, как был сгенерирован ответ.

    Серверы HTTP/1.1 ДОЛЖНЫ отправлять Last-Modified всякий раз, когда это возможно.

    С этого момента Last-modified является необязательным, и его значение зависит от характера исходного ресурса.

    30.10.2010
    Новые материалы

    Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
    Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

    Как интегрировать модель машинного обучения на ios с помощью CoreMl
    С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..