В рамках задания было реализовано два класса: Link_Parser который парсит переданный URL, извлекает все ссылки, удаляет мусор (социальные сети, ссылки на внешние ресурсы, и т.д.), My_Tree который строит граф из ссылок полученных после работы Link_Parser, выводит граф на экран, и сохраняет его в графический файл. В качестве основного средства для построения графа была выбрана библиотека ete3
Парсер выполнен в двух вариантах:
- thread_app.py - многопоточный
- multiprocessing_app.py - многопроцессорный
- ete3
- PyQt5
- beautifulsoup 4
- git clone https://github.com/Vladimir-vut/site_parser
- cd AVSoft_task
- python -m venv environment name 3. Для Linux: source environment name/bin/activate 3. Для Windows: environment name\Scripts\activate.bat
- pip install -r requirements.txt
- python thread_app.py
thread_app.py или multiprocessing_app.py можно запускать без аргументов, в этом случае будут использованы значения аргументов по умолчанию. Для передачи своих аргументов можно использовать ключи:
- -u передача URL для парсинга. Формат http://domain (str)
- -tm максимальное время ожидания от сервера в секундах (int)
- -d максимальная глубина парсинга (int)
- -ml максимальная ширина парсинга (int)
- -h вызов справки
Результат работы скрипта сохраняется в файлы tree.txt, tree.png. Так же результат визуализируется GUI
- Предпочтительно объектно-ориентированный стиль программирования
- Многопоточная обработка с Python средствами (Multiprocessing, Threading, etc..) или потоки из под языка Си (захват/освобождение GIL)
- Итераторы/Генераторы для обхода структуры (в глубину/ширину)
- Залить на Github/Bitbucket
- Опционально: сейв карты в базу или рисовать с помощью matplotlib