Аналог коммерческой программы Website-Watcher с открытым исходным кодом.
Пишется "под себя", поскольку, WsW является достаточно навороченныи продуктом, и, к тому же, платным.
Сейчас стоит задача максимально быстро запустить jSite-Watcher в работу. Для этого необходимо реализовать минимальный функционал.
- Функция пределение того, что страница изменилась (пока просто equals)
- Таблица закладок (H2): ID, categoryId, URL, title, date, settings
- Сохранять страницу в файл {ID}
- Добавлять закладки
- Таблица категорий (H2): ID, parentId, title, settings
- Пока одна категория All
- Проверка всех по требованию (пока просто кнопка)
- Подсветка изменений
- Отображение с подсветкой изменённых данных во встроенном браузере
- Все взаимодействия с 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 после его обработки отображается некорректно.
Было принято решение найти этой замечательной библиотеке легковесную альтернативу.
Источники:
-
Загружать страницу в WebView напрямую из файла
-
Поменять данные в WebView напрямую
-
Перед показом страницы преобразовывать все относительные ссылки в абсолютные
-
a
-
img
-
link href
-
script src
Возможные проблемы - битые html. Есть чистильщики
htmlcleaner, htmlparser, jtidy, tagsoup, nekohtml, jericho с задачей не справились.
JAunt, HtmlUnit не тестировались.
На данный момент лучший парсер HTML страниц - WebView.
Возможно, остановлюсь на связке Document + jOOX.
Useful links:
- https://html.spec.whatwg.org/multipage/parsing.html#doctype-name-state
- https://www.w3.org/TR/2011/WD-html5-20110113/the-end.html#fragment-case
- https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
- https://github.com/google/gumbo-parser/blob/master/src/parser.c
Последние исследования показали, что нет большого смысла использовать сторонние библиотеки для работы с DOM.
Поскольку Document вытаскивается из WebView, и у интерфейсов org.w3c.dom уже имеется достаточно приличная реализация, куда разумнее использовать её напрямую.
Так же, для повышения скорости обработки и портируемости, разумно посмотреть, как парсится HTML в OpenJFX.
- Рефактор
- Правила: Process only, Skip numbers, Skip minor changes (+ threshold), Exclude node, Exclude by Id, ...
- Rules in Rules DB
- Load
- [ ]
- [ ]
- Научиться сливать два дерева
- система плагинов (заливка на ftp, по API, email, ...)
- агрегация данных (например, выбрать заголовок, текст)
- какие-то операции с изменёнными файлами, например, заливка
WebSite-Watcher — условно-бесплатная программа с закрытым кодом, отслеживающая изменения на заданных пользователем веб-страницах. Работает под ОС Windows, WINE.
WebSite-Watcher, фактически, является менеджером закладок с функциями наблюдения за изменениями. Благодаря поддержке языка регулярных выражений, в закладке можно указать область отслеживаемых изменений.
Несмотря на ряд недостатков, программа популярна среди медиа аналитиков. После настройки она позволяет практически полностью автоматизировать мониторинг СМИ.
- Наблюдение за изменениями заданных пользователем веб-страниц.
- Подсветка изменений на странице
- Поддержка регулярных выражений
- Импорт ссылок из текстового файла
- Экспорт закладок во внешний файл
- Фильтрация javascript
- Чтение ленты RSS- или Atom-новостей
- Локализация интерфейса на многие языки
- Мониторинг веб-страниц всех типов. При этом в зависимости от настройки программа подсвечивает только измененные фрагменты страницы, либо только заданные ключевые слова, либо исключительно те изменившиеся части страницы, где есть заданные ключевые слова;
- Мониторинг защищенных паролем страниц. При помощи специально встроенного инструмента вы однажды записываете для защищенных паролем страниц логины, и дальше всю работу программа выполняет самостоятельно.
- Мониторинг форумов. Позволяет следить за появлением новых тем и ответов на уже имеющиеся, интересующие вас темы. Поддерживает подавляющую часть популярных форумных движков;
- Мониторинг RSS лент. Программа обнаруживает новые или измененные RSS сообщения и преобразует их в обычный текстовой формат;
- Мониторинг групп новостей. Группы новостей слабо развиты в Рунете, но очень популярны в мировом интернете. Программа позволяет вести мониторинг групп новостей по заданным ключевым словам;
- Мониторинг локальных файлов. Позволяет использовать в локальной сети или на собственном компьютере те же мощные функции, что и для работы с веб-ресурсами;
- Мониторинг документов. Программа автоматически преобразует PDF, Word, Excel документы в HTML файлы и дальше работает с ними как с обычными веб-страницами, ведет поиск по ключевым словам и т.п.