Skip to content

azolotukhin/simplehtmlparser

Repository files navigation

simplehtmlparser

Задача.

Большинство веб-страниц сейчас перегружено всевозможной рекламой… Наша задача «вытащить» из веб-страницы только полезную информацию, отбросив весь «мусор» (навигацию, рекламу и тд).

Описание алгоритма и запуск.

Основная полезная информация будет храниться в определенных тэгах. Имея урл, мы достаем контент страницы и просто ищем содержимое этих тэгов. Для разных сайтов набор таких тэгов разный (но схожий), поэтому для гибкой настройки в файле config.py описаны возможные настройки. Для парсинга используется стандартный питоновский HTMLParser, вспомогательные инструменты BeautifulSoup4 и python-requests. Возможно исполнение кода только с помощью python3.

Для использования в дирректории проекта в консоли вводим python -m htmlparser page_url
Пример: python -m htmlparser http://lenta.ru/news/2016/02/05/sexual_kolne/

Настройки.

LINE_MAX_LENGTH - максимальная длина строки

ALLOWED_TEXT_TAGS - тэги, из которых будем брать текст.
Пример: Брать текст из h1 и p
ALLOWED_TEXT_TAGS = ['h1', 'p']

IGNORE_ATTRS - в тэгах с такими атрибутами мы искать не будем, формат [('название атрибута', 'значение атрибута'), ...].
Пример: не брать текст из любых дочерних элементов тэга с id="menu" и тэга с id="navPath"
IGNORE_ATTRS = [('id', 'menu'), ('id', 'navPath')]

IGNORE_TAGS - в таких тэгах искать не надо.
Пример: не брать текст из любых дочерних элементов тэгов aside и header
IGNORE_TAGS = ['aside', 'header']

TAG_BEGIN_SYMBOLS - словарь для выделения нужных тэгов от начала строки.
Пример: выделять заголовок h1 как ##
TAG_BEGIN_SYMBOLS = {'h1': '## '}

TAG_END_SYMBOLS - словарь для выделения нужных тэгов с конца строки.
Пример: выделять заголовок h1 как ##
TAG_END_SYMBOLS = {'h1': ' ##'}

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

В файле config.py закомментированы настройки для нескольких новостных сайтов.

Тестовые страницы

Результаты тестов также содержатся в репозитории.

Дальнейшее развитие

  1. Разделение тэгов <ol></ol> и <ul></ul> , возможность нумерации пунктов.
  2. Загрузка "важных" картинок со страницы в директорию файла.
  3. Написание тестов.
  4. Поддержка python 2.7

About

HTML Parser for news page

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages