ivansapr / readability

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

readability

Алгоритм:

1. На входе делаем валидацию URL
2. Делаем запрос, если статус 200, то все хорошо
3. Проверяем, есть ли поисковые настройки для сайта
4. Настройки есть
    4.1 Ищем контейнеры с блоками текста и заголовков
    4.2 Форматируем в словари с указанием типа строки
5. Настроек нет
    5.1 Парсим элементы по дефолтному тегу из настроек
    5.2 Собираем родительские контейнеры на 1 уровень
    5.3 От каждого контейнера идем вверх по тегам и ищем дефолтные теги заголовков
    5.4 Выбираем контейнеры с длиной текста больше числа из настроек и от которых удалось найти заголовок
    5.5 Выбираем самый длинный заголовок
    5.6 Собираем кортеж заголовок и текст
6. Создаем директорию из URL
7. Каждый элемент текста сохраняем и форматируем под необъодимую ширину

Улучшение:

- Сохранение настроек, если текст найден правильно
- Кластеризация текста, через растояние в дереве, чтобы найти нужный блок

ТЕСТЫ:

  1. https://ura.news/news/1052370155 - Нашел елементы текста и заголовка, настройки по умолчанию
  2. https://habr.com/ru/post/438168/ - Нашел заголовок, текст не нашел, взял комментарии, настройки по умолчанию
  3. https://lenta.ru/news/2019/01/31/qatar_2022/ - Нашел елементы текста и заголовка, настройки указанные в config.json
  4. https://www.gazeta.ru/business/2019/02/01/12157543.shtml?updated - Найден текст и подзаголовок, основной заголовок не стандартно определен, внутренние подзаголовки не нашел, настройки по умолчанию
  5. https://72.ru/text/gorod/65901781?from=leadingstory - нашел заголовок и текст, еще нашел лишние блоки текста, настройки по умолчанию
  6. https://moi-portal.ru/novosti/587527-molodezh-tyumeni-mozhet-prinyat-uchastie-v-forme-utro/ - нашел заголовок и текст, настройки по умолчанию
  7. https://dtf.ru/games/38639-v-tvittere-metro-exodus-igrokov-poprosili-adresovat-svoi-pretenzii-izdatelyu - найден заголовок и текст, настройки указанные в config.json

About


Languages

Language:Python 100.0%