Главная

Tuesday, 18 January 2022

Фреймворки Scapy, Scrapli и Scrapy.


Всем привет.

Однажды мне удалось перепутать фреймворк Scapy со Scrapli. Оказалось этого мало - ведь есть еще один фреймворк под именем Scrapy. Что было с фантазией авторов на имена, но все фреймворки существуют по сей день, и служат совершенно разным целям. Поэтому пройдемся кавалерийским шагом по каждому.

Фреймворк Scapy.

Scapy является мощной программой интерактивной манипуляции пакетами на основе Python. Я на это ней уже пару раз останавливался.

Фреймворк Scrapli.

Scrapli это модуль, который позволяет подключаться к сетевому оборудованию используя Telnet, SSH или NETCONF. Также как и netmiko, Scrapli может использовать paramiko или telnetlib (и другие модули) для самого подключения, но при этом предоставляет одинаковый интерфейс работы для разных типов подключения и разного оборудования.

Установка scrapli:

pip install scrapli

Три основные составляющие части Scrapli:

• transport - это конкретный способ подключения к оборудованию

• channel - следующий уровень над транспортом, который отвечает за отправку команд, получение вывода и другими взаимодействиями с оборудованием

• driver - это интерфейс, который предоставляется пользователю для работы со scrapli.

Тут есть как специфические драйверы типа IOSXEDriver, который понимает как взаимодействовать с оборудованием конкретного типа, так и базовый драйвер Driver, который предоставляет минимальный интерфейс для работы через SSH/Telnet.

Доступные варианты транспорта:

• system - используется встроенный SSH клиент, подразумевается использование клиента на Linux/MacOS

• paramiko - модуль paramiko

• ssh2 - используется модуль ssh2-python (обертка вокруг C библиотеки libssh2)

• telnet - будет использоваться telnetlib

• asyncssh - модуль asyncssh

• asynctelnet - telnet клиент написанный с использованием asyncio

Основные приемы работы Scrapli с начинаются с использования транспорта system. Так как интерфейс модуля одинаковый для всех синхронных вариантов транспорта, для использовании другого вида транспорта, надо только указать его (для транспорта telnet также обязательно указать порт).

Поддерживаемые платформы: Cisco IOS-XE,  Cisco NX-OS,  Juniper JunOS,  Cisco IOS-XR,  Arista EOS.

Кроме этих платформ, есть также платформы scrapli community. И одно из преимуществ scrapli то, что добавлять платформы относительно легко. В scrapli глобально есть два варианта подключения: используя общий класс Scrapli, который выбирает нужный driver по параметру platform или конкретный driver, например, IOSXEDriver. При этом параметры передаются те же самые и конкретному драйверу и Scrapli.

Если вас этот модуль заинтересовал, то загляните в книгу Н.Самойленко "Python для сетевых инженеров", выпуск 3.0. Она есть в свободном доступе.

Едем дальше.

Фреймворк Scrapy.

Scrapy - это продвинутый Python-фреймворк для веб-скрапинга, который помогает разработчикам извлекать данные с разных сайтов. Scrapy использует веб-краулеров, называемых Spider. Они могут доставать, обрабатывать и сохранять данные. Поскольку Scrapy построен на базе Twitsted, асинхронного сетевого фреймворка, он отправляет запросы без блокировки потока. Это влияет на скорость.

Преимущества Scrapy:

  • Имеется встроенный механизм под названием Selector, который отвечает за поиск и извлечение данные со страниц с помощью Xpath и CSS.
  • Для работы Scrapy не нужно много дополнительного кода как в случае с остальными фреймворками. Достаточно лишь указать сайт и данные, которые требуется получить. Scrapy сделает все остальное.
  • Scrapy - это бесплатный, кроссплатформенный проект с открытым исходным кодом.
  • Он является быстрым, мощным и легко расширяемым за счет асинхронной обработки запросов.
  • Используется для создания скраперов для крупных проектов.
  • С помощью Scrapy можно извлекать данные с любых страниц вне зависимости от их доступности.
  • Куда меньшее потребление памяти и мощности процессора в сравнении с другими библиотеками.
  • Поддерживает экспорт данных в разные форматы, включая CSV, XML, JSON и JSON Line.
  • Отличное сообщество для разработчиков.

Установка Scrapy, первые шаги, применение широко описаны в сети.

Scrapy скорее всего удобная вещь для тех кто занимается web scraping-ом. Что мне не очень легло c первой попытки, так это то что перед созданием паука нужный web-сайт надо разобрать вручную. Достаточно лишь указать целевой сайт и данные: так вот надо предварительно четко определить где имено на сайте те данные находятся.

Ну вот собственно и все. Главное не запутайтесь в именах.)


No comments:

Post a Comment

А что вы думаете по этому поводу?