/jSite-Watcher

jSite-Watcher: monitor websites for updates and changes

Primary LanguageJavaMIT LicenseMIT

jSite-Watcher

Аналог коммерческой программы Website-Watcher с открытым исходным кодом.

Пишется "под себя", поскольку, WsW является достаточно навороченныи продуктом, и, к тому же, платным.

TODO список

Сейчас стоит задача максимально быстро запустить jSite-Watcher в работу. Для этого необходимо реализовать минимальный функционал.

Фаза 0

  • Функция пределение того, что страница изменилась (пока просто equals)

Фаза 1

  • Таблица закладок (H2): ID, categoryId, URL, title, date, settings
  • Сохранять страницу в файл {ID}
  • Добавлять закладки
  • Таблица категорий (H2): ID, parentId, title, settings
  • Пока одна категория All

Фаза 2

  • Проверка всех по требованию (пока просто кнопка)
  • Подсветка изменений
  • Отображение с подсветкой изменённых данных во встроенном браузере

Фаза 3

  • Все взаимодействия с DB вынести
  • Хранить ссылки на контроллеры
  • Web View, Table View, Tree View tabs
  • Save new version flow (if diff): 1 -> 1o, tmp -> 1
  • tmp - random uuid in tmp
  • Get Jsoup diff
  • Show Jsoup diff in Web View
  • Show Jsoup diff in Table View
  • Current bookmark related data
  • Bookmark - status: initialized, unchanged, changed, error
  • Status in tableview; color

Экспериментальная фаза

Выяснилось, что JSoup отлично читает HTML страницы, но, грешит тем, что позволяет себе форматировать их, переставляя теги. Сайт tv-games.ru после его обработки отображается некорректно.

Было принято решение найти этой замечательной библиотеке легковесную альтернативу.

Источники:

  • https://github.com/jOOQ/jOOX

  • Загружать страницу в WebView напрямую из файла

  • Поменять данные в WebView напрямую

  • Перед показом страницы преобразовывать все относительные ссылки в абсолютные

  • a

  • img

  • link href

  • script src

Возможные проблемы - битые html. Есть чистильщики

htmlcleaner, htmlparser, jtidy, tagsoup, nekohtml, jericho с задачей не справились.

JAunt, HtmlUnit не тестировались.

Примеры кода

На данный момент лучший парсер HTML страниц - WebView.

Возможно, остановлюсь на связке Document + jOOX.

Useful links:

Последние исследования показали, что нет большого смысла использовать сторонние библиотеки для работы с DOM.

Поскольку Document вытаскивается из WebView, и у интерфейсов org.w3c.dom уже имеется достаточно приличная реализация, куда разумнее использовать её напрямую.

Так же, для повышения скорости обработки и портируемости, разумно посмотреть, как парсится HTML в OpenJFX.

Фаза 4

  • Рефактор
  • Правила: Process only, Skip numbers, Skip minor changes (+ threshold), Exclude node, Exclude by Id, ...
  • Rules in Rules DB
  • Load
  • [ ]
  • [ ]
  • Научиться сливать два дерева

Далёкая перспектива:

  • система плагинов (заливка на ftp, по API, email, ...)
  • агрегация данных (например, выбрать заголовок, текст)
  • какие-то операции с изменёнными файлами, например, заливка

О Website-Watcher

WebSite-Watcher — условно-бесплатная программа с закрытым кодом, отслеживающая изменения на заданных пользователем веб-страницах. Работает под ОС Windows, WINE.

WebSite-Watcher, фактически, является менеджером закладок с функциями наблюдения за изменениями. Благодаря поддержке языка регулярных выражений, в закладке можно указать область отслеживаемых изменений.

Несмотря на ряд недостатков, программа популярна среди медиа аналитиков. После настройки она позволяет практически полностью автоматизировать мониторинг СМИ.

Функции Website-Watcher

  • Наблюдение за изменениями заданных пользователем веб-страниц.
  • Подсветка изменений на странице
  • Поддержка регулярных выражений
  • Импорт ссылок из текстового файла
  • Экспорт закладок во внешний файл
  • Фильтрация javascript
  • Чтение ленты RSS- или Atom-новостей
  • Локализация интерфейса на многие языки

Возможности Website-Watcher

  • Мониторинг веб-страниц всех типов. При этом в зависимости от настройки программа подсвечивает только измененные фрагменты страницы, либо только заданные ключевые слова, либо исключительно те изменившиеся части страницы, где есть заданные ключевые слова;
  • Мониторинг защищенных паролем страниц. При помощи специально встроенного инструмента вы однажды записываете для защищенных паролем страниц логины, и дальше всю работу программа выполняет самостоятельно.
  • Мониторинг форумов. Позволяет следить за появлением новых тем и ответов на уже имеющиеся, интересующие вас темы. Поддерживает подавляющую часть популярных форумных движков;
  • Мониторинг RSS лент. Программа обнаруживает новые или измененные RSS сообщения и преобразует их в обычный текстовой формат;
  • Мониторинг групп новостей. Группы новостей слабо развиты в Рунете, но очень популярны в мировом интернете. Программа позволяет вести мониторинг групп новостей по заданным ключевым словам;
  • Мониторинг локальных файлов. Позволяет использовать в локальной сети или на собственном компьютере те же мощные функции, что и для работы с веб-ресурсами;
  • Мониторинг документов. Программа автоматически преобразует PDF, Word, Excel документы в HTML файлы и дальше работает с ними как с обычными веб-страницами, ведет поиск по ключевым словам и т.п.