Skip to main content

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.

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)

Table of built distributions (wheels) for search-this 0.4.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.4.2 This release

1 release file

0.4.1

1 release file

0.4

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page