Парсинг нужен, чтобы получить с сайтов открытую информацию. К примеру, цены, фотографии или полностью каталог товаров. Для этой задачи нужны специальные инструменты.
Расскажем о том, как спарсить информацию с любого сайта, даже если вы ничего не понимаете в программировании, на примере Screaming Frog Seo Spider.
Что такое парсинг и зачем он нужен
Если пользоваться терминологией «для чайников», парсинг — это сбор структурированной информации. Чаще всего, результаты оформляются в виде таблицы с конкретным набором данных.
Парсер — программа, которая собирает данные по заданным условиям. Со страниц, которые вы указали, она собирает нужную информацию в Excel-файл либо куда-то еще.
Основа процесса парсинга — язык запросов XPath. С его помощью программа обращается к определенному участку кода страницы и собирает из него заданную информацию.
Программы для парсинга
Допустим, вы решили, что вам нужно специальное ПО для парсинга. Но если вы введете в поисковике слово «парсинг» или фразу «заказать парсинг», то вам среди прочего будут предлагаться услуги. Эти услуги стоят относительно дорого и предполагают создание программы-парсера с нуля под вашу задачу. Кроме цены у этого метода есть еще один существенный недостаток — как правило, такая программа нацелена только на сбор конкретных данных, она не гибкая и без знаний программирования вы не сможете ее самостоятельно перенастроить для других задач.
Однако на рынке существуют готовые решения, которые можно настроить под свои задачи. SEO-специалисты однозначно знакомы с таким ПО, но, возможно, не используют его функционал в полной мере.
Покажем, как парсить нужную информацию с сайта, на примере Screaming Frog SEO Spider. У программы есть и бесплатный функционал, но под наши задачи нужна платная версия. Годовая лицензия обойдется примерно в 15 000 рублей (£149.00).
Парсим цены
Возьмем такую ситуацию: вам нужно собрать цены с сайта конкурента. Для примера мы выбрали сайт mosdommebel.ru.
- Заходим на страницу карточки товара:
- Видим, что цена отображается вверху справа, напротив заголовка H1. Ищем эту цену в html-коде. Для этого нажимаем правой кнопкой мыши прямо на цену (не просто на какой-то фон или пустой участок). Затем выбираем пункт Inspect Element (Исследовать элемент, Просмотреть код элемента, в зависимости от браузера) для того, чтобы в коде сразу его определить:
Цена заключена в тег <span> с классом totalPrice2. Так разработчик обозначил в коде стоимость данного товара, которая отображается в карточке.
Фиксируем: есть некий элемент span с классом totalPrice2. Пока это держим в голове.
- Дальше можно поступить двумя способами.
3.1. Первый способ. Непосредственно в коде нажать правой кнопкой мыши на тег <span> и выбрать Скопировать > XPath. Скопируется строка, которая обращается к данному участку кода:
Выглядит она так:
/html/body/div[1]/div[2]/div[4]/table/tbody/tr/td/div[1]/div/table[2]/tbody/tr/td[2]/form/table/tbody/tr[1]/td/table/tbody/tr[1]/td/div[1]/span[1]
Но этот вариант не слишком надежен. Допустим, в другой карточке товара верстка выглядит иначе (например, нет каких-то блоков или блоки расположены по-другому) — тогда метод не сработает.
3.2. Второй способ. Воспользуемся справкой по языку XPath. Их очень много, просто загуглите «XPath примеры».
Например, такая:
Здесь указано как с помощью языка запросов XPath получить нужные данные. Например, если мы хотим получить содержимое заголовка h1, нам нужна такая запись:
//h1/text()
Если мы хотим получить текст заголовка с классом productName, мы пишем вот так:
//h1[@class="productName"]/text()
Нам нужно поставить «//» как обращение к нужному элементу на странице, написать тег h1 и указать в квадратных скобках через символ @ «класс равен такому-то». То есть не копировать что-то, не собирать информацию откуда-то из кода, а вместо этого написать строку запроса, который обращается к нужному элементу. Куда ее вписать — сейчас разберемся.
4. Открываем Screaming Frog Seo Spider.
5. Заходим во вкладку меню Configuration, выбираем подпункт Custom, и в нем еще один подпункт Extraction:
6. Заходим в Extraction. Мы хотим собрать цены товаров.
И уже выяснили, что все цены на карточках товара обозначаются в коде тегом <span> с классом totalPrice2. Исходя из этой информации формируем вот такой XPath запрос:
//span[@class="totalPrice2"]/span
И указываем его в разделе Configuration > Custom > Extractions. Для удобства можем как-нибудь назвать колонку, в которую будет попадать информация. Например, «стоимость»:
Так парсер будет обращаться к коду страниц и вытаскивать из него содержимое стоимости.
Также в настройках мы можем указать, что парсер будет собирать — весь html-код или только текст. Нам нужен только текст, без разметки, стилей и других элементов:
7. Нажимаем ОК. Мы задали кастомные параметры парсинга.
8. Подбираем страницы, с которых парсить информацию. Если мы просто укажем URL сайта в Screaming Frog, программа пойдет по всем страницам сайта. Но на информационных страницах и страницах категорий цен нет. Чтобы не тратить время, лучше загрузить в парсер конкретный список страниц — карточки товаров. Откуда их взять?
Как правило, на любом сайте есть XML-карта, и находится она чаще всего по адресу: «адрес сайта/sitemap.xml». В случае с сайтом из нашего примера это адрес:
https://www.mosdommebel.ru/sitemap.xml.
Можно узнать адрес карты сайта в robots.txt (site.ru/robots.txt). Чаще всего ссылка на карту сайта расположена в самом низу:
Даже если карта называется как-то странно, необычно, нестандартно, вы все равно увидите здесь ссылку.
Но если вдруг карты сайта нет, придется запускать стандартный режим в парсере. Программа будет ходить по всем страницам, но нужную информацию соберет только с карточек товара. Минус только в том, что вы потратите больше времени.
В нашем случае карта сайта есть, поэтому переходим по ссылке https://www.mosdommebel.ru/sitemap.xml и видим, что сама карта разделяется на несколько карт. Отдельная карта по статичным страницам, по категориям, по продуктам (карточкам товаров), по статьям и новостям:
Нас интересует карта продуктов, то есть карточек товаров:
9. Возвращаемся в Screaming Frog и запускаем его в режиме List. В этом режиме мы загрузим конкретный список страниц, по которому он будет ходить. Нажимаем на вкладку Mode и выбираем List:
Жмем кнопку Upload и кликаем по Download Sitemap:
Указываем ссылку на Sitemap карточек товара, нажимаем ОК:
Программа скачает все ссылки, указанные в карте сайта. В нашем случае Screaming Frog обнаружил более 40 тысяч ссылок на карточки товаров:
10. Нажимаем ОК, и начинается парсинг сайта:
11. После завершения парсинга на первой вкладке Internal мы можем посмотреть информацию по всем характеристикам: код ответа, индексируется/не индексируется, title страницы, description и все остальное.
Это все полезная информация, но нам нужна стоимость товаров.
11. Для этого в интерфейсе Screaming Frog переходим на вкладку Custom:
На этой вкладке из выпадающего списка фильтров (Filter) выбираем Extraction:
И получаем список страниц и колонка «Стоимость 1» с ценами в рублях:
12. Теперь полученные данные можно выгрузить в xlsx или csv-файл для дальнейшей работы:
Если требуется получить дополнительные сведения, например названия этих товаров, то нужно проделать следующие шаги:
- зайти в Configuration > Custom > Extraction;
- выбрать еще один XPath-запрос;
- указать, что мы хотим собрать, в нашем случае — тег <h1>.
Запускаем парсинг еще раз и получаем не только стоимость, но и названия товаров:
Получилась связка: url товара, его цена и название.
Если мы хотим получить описание товара или другие данные — продолжаем действовать по изложенной выше схеме.
Важно учесть следующее: в случае с описанием или другими элементами потребуется возвращаться в код страницы и смотреть, как называется тег, какой у него класс/id, другие атрибуты, к которым мы можем обратиться с помощью XPath-запроса.
Парсим фотографии товаров
Возьмем сайт Эльдорадо, где у каждого товара есть много качественных фото. Это универсальные фото от производителя, которые можно использовать и на своем сайте. Посмотрим, каким образом их можно собрать.
Для этого нам нужно собрать в эксель адреса всех картинок, которые есть у разных карточек товара. Именно адреса, в виде ссылок. По ссылкам фото можно скачать или напрямую загрузить на свой сайт. Большинство движков интернет-магазинов, таких как Битрикс и Shop-Script, поддерживают загрузку фотографий по ссылке. Нужно всего лишь указать в CSV-файле, который используется для импорта-экспорта, ссылки на фотографии.
Чтобы узнать, где в коде страницы зашит адрес фотографии, нажимаем на нее правой кнопкой, выбираем Inspect Element, начинаем исследовать:
Смотрим, в каком элементе и с каким классом у нас находится данное изображение, что оно из себя представляет, какая у него ссылка и т.д.:
Выяснили, что изображения лежат в элементе <span>, у которого id — firstFotoForma. Чтобы спарсить нужные нам картинки, пишем XPath-запрос:
//*[@id="firstFotoForma"]/*/img/@src
Расшифруем его: это обращение к элементам с идентификатором firstFotoForma, дальше есть какие-то вложенные элементы (поэтому прописана звездочка), дальше тег img, из которого нужно получить содержимое атрибута src. То есть строку, в которой и прописан URL-адрес фотографии.
Берем этот XPath-запрос, в Screaming Frog переходим в Configuration > Custom > Extraction, вставляем и жмем ОК:
Для начала попробуем спарсить одну карточку. Нужно скопировать ее адрес и добавить в Screaming Frog таким образом: Upload > Paste.
Нажимаем ОК. Screaming Frog спарсил одну карточку товара и у нас получилась табличка:
Мы загрузили один URL на входе, и у нас автоматически появилось сразу много столбцов «фото товара». По этому товару собралось 9 фотографий.
Для проверки попробуем открыть одну из фотографий. Копируем адрес фотографии и вставляем в адресной строке браузера:
Фото открылось, значит парсер сработал корректно и вытянул нужную нам информацию.
Теперь переключим Screaming Frog в режим Spider. Для этого нажимаем Mode > Spider. Указываем адрес https://www.eldorado.ru, нажимаем старт и запускаем парсинг.
Программа парсит весь сайт. На страницах, которые не являются карточками товара, ничего не находится. А по карточкам товаров собираются ссылки на все фотографии:
Их легко собрать и положить в Excel-таблицу. В ней будут указаны ссылки на все фотографии для каждого товара.
Парсим характеристики товаров
Соберем характеристики товаров на примере книг из интернет-магазина Озон.
Нажимаем правой кнопкой на каждую характеристику, выбираем Inspect Element и смотрим, как называется элемент, который содержит характеристику:
У нас это элемент <div>, у которого в качестве класса указана строка eItemProperties_Line.
Внутри каждого такого элемента <div> содержится название характеристики и ее значение:
Значит, нам нужно собирать элементы <div> с классом eItemProperties_Line.
Для парсинга составляем XPath-запрос:
//*[@class="eItemProperties_line"]
В Screaming Frog выбираем Configuration > Custom > Extraction. Вставляем XPath-запрос, выбираем Extract Text (так как нам нужен только текст в чистом виде, без разметки), нажимаем ОК.
Далее проделываем следующее:
- переключаемся в режим Mode > List;
- нажимаем Upload;
- указываем адрес страницы, с которой будем собирать характеристики;
- нажимаем ОК.
После завершения парсинга переключаемся на вкладку Custom, в списке фильтров выбираем Extraction.
Парсер собрал все характеристики. В каждой ячейке мы видим название характеристики (например, «Автор») и ее значение («Игорь Ашманов»).
Что можно парсить при помощи XPath
Короткий ответ — любую информацию практически с любого сайта. Единственное, надо понимать, что есть сайты с защитой от парсинга. Например, проекты Яндекса или сайт Авито. Но большинство сайтов можно спарсить.
Примеры данных, которые можно собрать при помощи XPath:
- Цены, наличие товаров, любые характеристики, фото, 3D-фото.
- Описание, отзывы, структуру сайта.
- Контакты, неочевидные свойства и т.д.
При помощи парсинга любой элемент на странице, который есть в коде, можно вытащить в таблицу Excel.
Какие есть ограничения при парсинге и как их обойти
- Бан по user-agent. Происходит это так: при обращении к сайту парсер отсылает запрос user-agent, в котором сообщает сайту информацию о себе. Некоторые сайты сразу блокируют доступ парсеров, которые в user-agent представляются как приложения. Это ограничение можно легко обойти. В Screaming Frog нужно зайти в Configuration > User-Agent и выбрать YandexBot или Googlebot.
Это называется подмена юзер-агента, этот маневр избавляет от ограничения.
- Запрет в robots.txt. К примеру, в robots.txt может быть прописан запрет индексирования каких-то разделов для поисковых роботов. Чтобы обойти ограничение, заходим в Screaming Frog в Configuration > Robots.txt > Settings:
Далее выбираем игнорировать robots.txt:
- Бан по IP. Если вы долгое время парсите какой-то сайт, то вас могут заблокировать на определенное или неопределенное время.
Здесь есть два варианта решения:
- Использовать VPN.
- Снизить скорость парсинга (это можно сделать в настройках), чтобы не давать лишнюю нагрузку на сайт.
- Анализатор активности (капча). Есть сайты, которые защищаются от парсеров с помощью умного анализатора активности. Если ваши действия похожи на роботизированные, то анализатор показывает капчу, которую парсер не может обойти. Такое ограничение преодолеть будет долго и дорого.
Для специализированных задач в SEO, контекстной и таргетированной рекламе отлично подойдут парсеры PromoPult:
Парсер метатегов и заголовков быстро соберет title, description, keyords, заголовки h1 — h6 с вашего сайта и сайтов конкурентов.
Парсер Wordstat соберет частотности фраз по нужным регионам.
Парсер поисковых подсказок расширит семантику подсказками из Яндекса, Google и YouTube.
Парсер фраз-ассоциаций дополнит семантическое ядро фразами из блока «вместе с запросом ищут».
Парсер ИКС и знаков Яндекса поможет сравнить показатели качества своего ресурса с сайтами конкурентов.
Парсеры сообществ и пользователей ВКонтакте помогут настроить таргетинг на целевую аудиторию.
Парсер слов и объявлений конкурентов позволит узнать и применить семантику и фишки ваших конкурентов в контекстной рекламе.
Теперь вы знаете, как собрать любую нужную информацию с сайтов конкурентов. Пользуйтесь приведенными примерами и помните — почти все можно спарсить. А если нельзя — то, возможно, вы просто не знаете как.