/otus-homework-1-search-this

Get search results from Google and DuckDuckGo

Primary LanguagePython

OTUS Homework 1 search this

Оглавление

Домашнее задание

Создать программу-поисковик Цель: В этой самостоятельной работе тренируем умения: 1. Писать "чистый код" 2. Собирать пакеты Чтобы: Применять принципы написания чистого кода и сборку пакетов Задача: Создать программу поисковик (консольную) Пользователь вводит текст запроса, поисковую систему (google.com, yandex.ru, ...), количество результатов, рекурсивный поиск или нет, формат вывода (в консоль, в файл json, в csv) Программа находит в интернете начиная от стартовой точки все ссылки на веб-странице в заданном количестве (название ссылки и саму ссылку) Если поиск не рекурсивный, то берем ссылки только из поисковика, если рекурсивный, то берем первую ссылку, переходим, находим там ссылки, переходим, ... В зависимости от выбранного формата вывода сохраняем результат (текст ссылки: ссылка) либо в консоль либо в файл выбранного формата 0. Создать репозиторий для нового проекта (gitlab, github, ...)

  1. Решить задачу

  2. Обратить внимание на следующие принципы:

  3. декомпозиция сверху вниз

  4. srp - принцип единственной ответственности

  5. термины предметной области

  6. уменьшение зависимости

  7. чистые функции

  8. цикломатическая сложность

python3 -m mccabe --min 5 module.py
flake8 --max-complexity 5
  1. понятные названия у переменных, функций, классов, модулей

  2. контекст ближе к коду (привязка к комитам, тикетам, комменты, документация, вики)

  3. разумное использование фишек python

  4. код на английском а не на python

  5. фичеризм - не слишком гибко, не слишком жестко, обобщать когда используется 2 раза

  6. тесты демонстрирующие не очевидное поведение

  7. статический анализ кода pycodestyle, flake8, ast

  8. Добавить setup.py для сборки программы в пакет

  9. Сдать дз в виде ссылки на репозиторий Критерии оценки: Задание считается выполненным, когда: Код запускается без ошибок и программа может получать ссылки по заданному запросу. Есть возможность сборки пакета - 4 баллов

Дополнительно:

  • Проверки flake8 и flake8 --max-complexity 5 не выдают ошибок 1 балл
  • Работает рекурсивный поиск 1 балл
  • Есть возможность выбора: поисковой системы 1 балл количества результатов 1 балл рекурсивный поиск или нет 1 балл вариант вывода (консоль, json, csv) 1 балл

Итого:4 + 1 + 1 + 1 + 1 + 1 + 1 = 10 баллов Рекомендуем сдать до: 07.06.2020

Описание

Искать можно в Google и DuckDuckGo. Иногда поиск в Google занимает около двух минут, иногда выдает сразу. DuckDuckGo работает быстро, но если слишком часто делать запросы, то DuckDuckGo банит на некоторое время.

Установка

pip install search-this

Использование

$ search_this -h
usage: search_this [-h] -q QUERY [-e {google,duck}] [-c COUNT] [-l {console,json,csv}]
optional arguments:
  -h, --help            show this help message and exit
  -q QUERY, --query QUERY
                        Query for searching. Words define in qoutes.
  -e {google,duck}, --engine {google,duck}
                        Choose the search engine. Default: Google.
  -c COUNT, --count COUNT
                        Count of results. Default: 1.
  -l {console,json,csv}, --logging {console,json,csv}
                        Information ouput. Default: console.