OTUS Homework 1 search this
Оглавление
Домашнее задание
Создать программу-поисковик Цель: В этой самостоятельной работе тренируем умения: 1. Писать "чистый код" 2. Собирать пакеты Чтобы: Применять принципы написания чистого кода и сборку пакетов Задача: Создать программу поисковик (консольную) Пользователь вводит текст запроса, поисковую систему (google.com, yandex.ru, ...), количество результатов, рекурсивный поиск или нет, формат вывода (в консоль, в файл json, в csv) Программа находит в интернете начиная от стартовой точки все ссылки на веб-странице в заданном количестве (название ссылки и саму ссылку) Если поиск не рекурсивный, то берем ссылки только из поисковика, если рекурсивный, то берем первую ссылку, переходим, находим там ссылки, переходим, ... В зависимости от выбранного формата вывода сохраняем результат (текст ссылки: ссылка) либо в консоль либо в файл выбранного формата 0. Создать репозиторий для нового проекта (gitlab, github, ...)
-
Решить задачу
-
Обратить внимание на следующие принципы:
-
декомпозиция сверху вниз
-
srp - принцип единственной ответственности
-
термины предметной области
-
уменьшение зависимости
-
чистые функции
-
цикломатическая сложность
python3 -m mccabe --min 5 module.py
flake8 --max-complexity 5
-
понятные названия у переменных, функций, классов, модулей
-
контекст ближе к коду (привязка к комитам, тикетам, комменты, документация, вики)
-
разумное использование фишек python
-
код на английском а не на python
-
фичеризм - не слишком гибко, не слишком жестко, обобщать когда используется 2 раза
-
тесты демонстрирующие не очевидное поведение
-
статический анализ кода pycodestyle, flake8, ast
-
Добавить setup.py для сборки программы в пакет
-
Сдать дз в виде ссылки на репозиторий Критерии оценки: Задание считается выполненным, когда: Код запускается без ошибок и программа может получать ссылки по заданному запросу. Есть возможность сборки пакета - 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.
Release files for search-this 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| search_this-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / search_this-0.4.2-py3-none-any.whl
| Download URL | search_this-0.4.2-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b292798f257f9a371af5f6d6cd4b17fe01c0d4b86e1e678fbcee50701c010298
|
|
BLAKE2b-256 checksum How to use checksums |
e241d8694167e421813e2052cd42c2d9ffd2d697926431bcc8117dc1e58b7aad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9
|