блоги - найти время последнего обновления - PullRequest
0 голосов
/ 04 июня 2018

У меня есть список из примерно 2000 блогов на разных языках с разным макетом.У меня две задачи: выявить неработающие ссылки и определить блоги, которые не обновлялись более 90 дней.В то время как первое задание легко, второе вызывает у меня головную боль.

Примеры:

http://100mirror.com/

https://www.adamsmith.org/blog

http://allfinancialmatters.com/ (этот не обновлялся более 90 дней)

Я пытался:

  • извлечь год с помощью регулярного выражения вместе с 10 символами до и 10 послеи попытаться разобрать использовать dateparser - на самом деле не работает
  • использовать javascript: alert (document.lastModified) - это не работает для динамически генерируемых сайтов
  • использовать машину обратного хода - слишком неточно

У кого-нибудь есть другая идея, как подойти к этой задаче?

Я использую Python.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Первая проверка текущего года в целом HTML.например (2018)

years = re.findall('.*2018.*', str(res.content)

Выполните итерацию для каждой записи и найдите, доступен ли какой-либо месяц, и за последние 3 месяца (4, 5, 6, март, апрель, май, июнь), еслида возвращаемый блог был обновлен в течение 90 дней, иначе учтите, что нет.

re.findall('.*(Jun|Mar|Apr).*', years[0])
0 голосов
/ 04 июня 2018

Независимо от формата блога или его языка можно с уверенностью предположить, что формат даты для каждого блога остается неизменным на протяжении всего блога.Я бы построил различные регулярные выражения для всех типов дат, о которых я могу думать:

  1. дд / мм / гг
  2. дд-мм-гг
  3. Месяц дд,гггг
  4. гггг.мм.дд

И так далее ... и поищите их всех.Если на странице найдено совпадение с одним из них, установите максимальную дату на главной странице, которая обычно будет соответствовать времени последнего обновления блога.

Если для определенных сайтов совпадение вообще отсутствуетлюбой формат, который вы можете придумать, посмотрите, какой формат использует этот сайт, добавьте этот формат и с другим регулярным выражением и повторите.

Кроме того, вы можете использовать регулярное выражение только для чисел 2018 или 18, если онибольше нигде не найти, сайт, вероятно, последний раз обновлялся в 2017 году (но это, конечно, верно только сейчас, и логика потерпит неудачу, если вы только начинаете 2019 год и т. д.)

Извинитеза то, что вы не возились с примерами кода, но вы этого не сделали :) Это просто основной алгоритм, который я бы использовал и улучшил.Вы можете проверить примеры регулярных выражений даты здесь: Регулярное выражение для сопоставления с действительными датами

Вы также можете использовать некоторые ответы здесь: Проверьте, есть ли в строке дата, любой формат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...