GithubHelp home page GithubHelp logo

budaevdigital / bs4_parser_pep Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 12.87 MB

Парсинг актуальных версий и описаний для Python и статусов PEP. А также скачивание официальной документации (стабильной версии) для дальнейшего самостоятельного ознакомления.

License: Other

Python 100.00%
bs4 pasre argparse logging prettytable request soup tqdm beautifulsoup python

bs4_parser_pep's Introduction

Парсер документации актуальной версии Python (stable) и статусов PEP

В проекте реализованно:

  • Парсинг данных (BeautifulSoup);
  • Кеширвание первичного запроса (Requests_cache);
  • Сбор логов на этапах парсинга (Logging);
  • Отслеживание переданных аргументов в командной строке (Argparse);
  • Вывод таблицы в красивом формате в консоль (PrettyTable);
  • Прогресс-бар для отслеживание процесса парсинга (Tqdm).

Что делает

Парсинг актуальных версий и описаний для Python и статусов PEP. А также скачивание официальной документации (стабильной версии) для дальнейшего самостоятельного ознакомления.

Запуск

Для запуска парсера, нужно передать в командную строку один из трех обязательных позиционных аргументов:

  • whats-new - Показыввает описание версии и автора;
  • latest-versions - Показывает версию и её статус;
  • download - Скачивает документацию по последней stable версии;
  • pep - Показывает статусы PEP документаций.

В командной строке можно также передать необязательные параметры:

  • -c или --clear-cache - Очищает кеш после предыдущего запуска команды;
  • -o pretty или file или --output pretty или file - Вывод результата запроса в файл или в удобной таблице прям в терминале.

Файлы документации сохраняются в директории downloads.

Отчеты с результатами парсинга (в формате csv) сохраняются в директории results.

Логи с информацией о работе парсинга расположены в директории logs.

Пример работы парсера

Пример команды:

python main.py latest-versions -o pretty -c

Как работает парсер PEP

Авторство

Парсинг сайта документации PEP и Python описан мной (Будаевым Дмитрием).

Тесты написаны командой Яндекс.Практикума, с одним небольшим изменением. Подробности ниже.

Не корректо описан html блок. В тестах он проверяется, как <div class="section" ... :

...
def test_find_tag(soup):
    got = utils.find_tag(soup, 'div', attrs={'id': 'what-s-new-in-python'})
    assert isinstance(got, bs4.element.Tag), (
        'Функция `find_tag` в модуле `utils.py` должна возвращать искомый тег'
    )
    assert (
        '<div class="section" id="what-s-new-in-python">' in got.__str__()
    ), (
        'Функция `find_tag` модуля `utils.py` '
        'не вернула ожидаемый <div> с `id=what-s-new-in-python`'
    )
...

Но на сайте, этот блок указан, как просто <section ... .

Корректный блок

После внесения необходимых изменений - тесты пройдены:

Пройденные тесты

bs4_parser_pep's People

Contributors

budaevdigital avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.