CoderCastrov logo
CoderCastrov
Парсер

Парсинг с Nokogiri - это не так страшно, или все-таки страшно?

Парсинг с Nokogiri - это не так страшно, или все-таки страшно?
просмотров
3 мин чтение
#Парсер
Table Of Content

    В настоящее время я работаю над проектом приложения, которое требует парсинга, обработки и итерации данных с веб-сайтов.

    Честно говоря, создание своего первого приложения с накопленными знаниями по программной инженерии за 4 недели - это не простая задача.

    После того, как я потратил некоторое время на парсинг, все начало складываться и, наконец, стало понятно. Я не считаю себя "экспертом" в этой области, но я хотел бы поделиться некоторыми идеями, которые могут оказаться полезными.

    Nokogiri спасет вашу жизнь!

    Nokogiri - это Ruby-гем, предназначенный для парсинга данных с веб-сайтов, и он является важным инструментом для разработчиков Ruby. Когда он объединяется с OpenURI, который является простым в использовании нативной библиотекой Ruby для обработки информации HTML, он становится мощным инструментом для получения информации с веб-сайтов, которые не предоставляют данные через API.

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

    Но все, что вам нужно, это немного понимания инструментов разработчика Google Chrome, немного CSS и основ Ruby, а также много терпения, потому что для получения правильных данных вам придется тщательно анализировать HTML и определить, какие элементы страницы содержат правильную информацию.

    Для моего проекта я решил создать парсер, который будет просматривать страницу с акционными продажами Comixology и парсить комиксы, указанные на продаже. Давайте пройдемся по упрощенному процессу парсинга.

    1- Установите Nokogiri

    Сначала установим гем Nokogiri. Это так просто, как ввод команды gem install nokogiri в терминале!

    2- Подключите Nokogiri и Open-Uri

    Установка Nokogiri может занять некоторое время, поэтому пока она устанавливается, вы можете сходить на кухню и выпить чашку кофе или чая. После установки, подключите их в начале вашего ruby-файла.

    3- Осмотрите контент, который вы хотите спарсить на веб-странице, используя инструменты разработчика Google Chrome. Это легко - просто щелкните правой кнопкой мыши на странице, которую вы хотите спарсить, и выберите "Inspect". Теперь вы сможете осмотреть элементы на веб-странице! Просто не забудьте щелкнуть на кнопку "select an element in the page to inspect it" в верхнем левом углу (стрелка, указывающая на середину квадрата).

    Наведите курсор на элементы, которые вы ищете. Когда вы выбираете элементы, в окне Elements будет выделен соответствующий CSS. Не стесняйтесь щелкать по элементам и выбирать их CSS в окне Elements. В моем случае я могу искать несколько вещей. Названия книг, выпуски, скидочная цена, исходная цена и так далее... Важно помнить, что мы сейчас собираемся использовать CSS-селекторы. Вот несколько важных вещей, которые следует учесть. Хранится ли контент, который мы ищем, внутри элемента? Можем ли мы увидеть текст, ссылку, изображение и т. д., обернутые в CSS в окне Elements? Есть ли какая-либо информация об идентификаторе или классе, которая следует за селектором/тегом?

    Поэтому крайне важно найти контент, который мы ищем, внутри правильного элемента. Давайте попробуем посмотреть, где изображение, текст, ссылка или любая другая информация, которую мы хотим спарсить, обернуты в CSS в окне Elements. Проверьте классы. Также убедитесь, что в CSS есть шаблоны. Таким образом, если мы проверим другой элемент, мы увидим аналогичный шаблон в способе хранения информации. Пойдем и поиграем. Бинго! Класс '.content-item' оборачивает всю информацию, которую мы ищем!

    Хорошо, давайте сохраните сайт, который мы хотим спарсить, в переменную в нашем Ruby-коде и пойдем поиграть еще с инструментами разработчика и CSS-селектором, чтобы получить детали каждого элемента, которые мы хотим спарсить.

    Я не буду подробно останавливаться на остальной части нашего Ruby-кода (это не инструкция пошаговой игры), но когда мы закончим остальную часть нашего кода, создавая переменные, отображая и итерируя каждый спарсенный элемент, у нас должен быть красивый и чистый список названий книг (book_title), выпусков (book_number), скидочной цены (book_price) и исходной цены (book_original_price) на основе выбранных CSS-элементов.

    Запустим наш код и Шазам!!

    Теперь мы спарсили красивый список комиксов, которые продаются со скидкой! Мы можем гордиться нашими навыками парсинга, даже если у нас нет адамантиевых когтей, как у Росомахи!

    Последние слова - несколько вещей, которые я узнал из своего опыта:

    Счастливого кодирования и пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или предложения!