CoderCastrov logo
CoderCastrov
Парсер веб-сайтов

Использование SelectorLib для быстрого сбора нужной информации

Использование SelectorLib для быстрого сбора нужной информации
просмотров
4 мин чтение
#Парсер веб-сайтов

Мой основной инструмент для сбора данных - библиотека SelectorLib. Это простой в использовании и быстрый альтернативный способ настройки парсера с нуля. Есть множество способов использования этой библиотеки, и я поделюсь своим рабочим процессом. Я также рекомендую всем заинтересованным ознакомиться с документацией на веб-сайте, так как там хорошо описаны руководства и учебные материалы.

Настройка

Для использования этого модуля вам необходимо установить пакет Python и загрузить расширение для Chrome.

pip install selectorlib

Вы можете представить процесс использования SelectorLib как применение фильтра к HTML-выводу. Вы выбираете все куски HTML, которые вам нужны, и отбрасываете остальное. SelectorLib используется для удобного создания такого фильтра.

Шаг 1: Использование расширения Chrome для выбора нужной информации.

Первое, что нам нужно сделать, это определить информацию, которую мы хотим получить. Для этой статьи давайте предположим, что мы хотим собрать жалобы BBB на Facebook. Вот макет страницы с жалобами:

Карточный макет

Как мы видим, страница разработана с использованием карточного макета. Большинство современных веб-сайтов разработаны таким образом, с "карточками", содержащими похожую информацию. В приведенном выше примере каждая жалоба содержится в своей собственной карточке. Далее на странице становится ясно, что ответы компании также добавляются в те же карточки:

Компания отвечает

Первый шаг - использовать Selectorlib для выбора внешней карточки. Нам нужно щелкнуть правой кнопкой мыши на странице, открыть инструменты разработчика и нажать на двойную стрелку.

Открыть инструменты разработчика

Затем нажмите на selectorlib в выпадающем меню.

Выбрать selectorlib

Затем мы хотим создать новый шаблон, назвать его и снова нажать create template, когда появится запрос.

Создать шаблон

Затем нажмите "add":

Добавить

Теперь вам будет представлена форма, в которой вы должны назвать свои выборы соответствующим образом. Я обычно называю внешний выбор card. После того, как вы дадите своему выбору имя, нажмите select element рядом с типом выбора, который вы хотите сделать. Есть два варианта: CSS Selector и XPath. XPath может быть очень полезным, если вам нужно получить те элементы, к которым сложно достучаться, но я предпочитаю попробовать использовать CSS Selectors, потому что они меняются реже, чем XPath - который может меняться в зависимости от макета страницы. Вы также должны выбрать радиокнопку "Multiple", потому что мы хотим получить все жалобы на странице.

Выбрать элемент

После нажатия на select element вы увидите, что при наведении курсора на страницу элементы начнут подсвечиваться зеленым цветом. Мы хотим начать выбирать карточки, после выбора нескольких они все должны подсвечиваться красным цветом.

Выбрать карточки

После выбора элемента он станет красным, и вы увидите всю информацию внутри карточки в окне preview. После выбора внешней карточки со всей нужной информацией нажмите "save".

Сохранить

Теперь, когда мы выбрали внешние карточки на странице, мы хотим начать выбирать всю информацию внутри карточки, которую мы хотим получить. После нажатия на плюс мы просто хотим следовать тому же процессу, добавляя элементы внутри карточки (и называя их правильно).

Добавить элементы Добавить элементы

После завершения страница должна выглядеть примерно так:

Завершенный шаблон

Теперь, когда у нас есть нужная информация, нам нужно получить текст YML, нажав на эту иконку:

Скопировать YML

Мы хотим скопировать этот YML-код для использования позже в нашем скрипте на Python. YML - это шаблон, который будет использовать selectorlib для выбора правильных элементов на странице.

Шаг 2: Парсинг информации на Python.

Теперь, когда у нас есть наш шаблон, запустите ваш любимый редактор кода и импортируйте модуль selectorlib. Вы можете использовать selenium, модуль requests или urllib, чтобы получить HTML-код страницы внутри вашего скрипта и извлечь информацию. Я предпочитаю использовать selenium, потому что он позволяет мне работать с любым взаимодействием с браузером, таким как пагинация или прокрутка вниз для отображения информации на сайте с бесконечной прокруткой. Ниже приведен основной контур процесса, вы можете обернуть другую логику вокруг этого кода, чтобы очень быстро создавать очень эффективные инструменты для парсинга.

Надеюсь, этот учебник был полезен. SelectorLib - это мой основной фреймворк для извлечения данных с веб-сайта и он работал в большинстве моих случаев парсинга. SelectorLib также не только извлекает текст, вы можете извлекать ссылки, изображения, HTML и атрибуты с помощью этого инструмента. Просто помните, чтобы уважать файл robots.txt для любых веб-сайтов, которые вы парсите.

Счастливого кодирования!

💻 Не стесняйтесь посетить мой веб-сайт.