Skip to content

Vladimir-vut/site_parser

Repository files navigation

Многопоточный парсинг сайта с последующей визуализацией карты. Python

В рамках задания было реализовано два класса: Link_Parser который парсит переданный URL, извлекает все ссылки, удаляет мусор (социальные сети, ссылки на внешние ресурсы, и т.д.), My_Tree который строит граф из ссылок полученных после работы Link_Parser, выводит граф на экран, и сохраняет его в графический файл. В качестве основного средства для построения графа была выбрана библиотека ete3

Парсер выполнен в двух вариантах:

  • thread_app.py - многопоточный
  • multiprocessing_app.py - многопроцессорный

Библиотеки

  • ete3
  • PyQt5
  • beautifulsoup 4

Установка и запуск

  1. git clone https://github.com/Vladimir-vut/site_parser
  2. cd AVSoft_task
  3. python -m venv environment name 3. Для Linux: source environment name/bin/activate 3. Для Windows: environment name\Scripts\activate.bat
  4. pip install -r requirements.txt
  5. 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages