• Главная
  • Блог
  • Автоматизированный парсинг сайтов с помощью kimono и таблиц google.

Автоматизированный парсинг сайтов с помощью kimono и таблиц google.

Все сталкивались с ситуацией, когда нужно собрать и систематизировать большое количество информации. Для стандартных задач по SEO-оптимизации сайта есть готовые сервисы, например, Netpeak Checker — для сравнения показателей конкурирующих сайтов или Netpeak Spider — для парсинга внутренней информации по сайту. Но что, если задача нетривиальна и готовых решений нет? Есть два пути: делать все руками и долго, или загнать рутинный процесс в матрицу, автоматизировать его и получать результат в разы быстрее. О таком кейсе и пойдет речь.

Что такое парсинг сайтов и зачем он нужен

Парсинг — это синтаксический анализ информации. Под парсингом HTML, как правило, подразумевают выборочное извлечение большого количества информации с других сайтов и ее последующее использование.

Eсли говорим, что парсим сайт — это значит, что с помощью формул таблиц Google или приложения Kimono находим на странице необходимый участок кода, в котором заключена нужная нам информация.

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


В нашем случае нужно было регулярно составлять по 20 однотипных таблиц, и на одну таблицу уходило по 40-50 минут.

Перед нами стояла цель: автоматизировать извлечение данных с других сайтов для каждой из ячеек этой таблицы и ускорить составление таблиц.

Что будем использовать для парсинга

Для парсинга нам понадобятся:

приложение-скрейпер для Google Chrome — Kimono;
таблицы Google Docs;
несколько базовых выражений на xPath для формулы importxml.
Парсинг данных с помощью функции importxml в таблицах Google

Предположим, нам нужно получить много значений расстояний по прямой между двумя заданными населенными пунктами. Вводим города попарно и хотим автоматизировать импорт расстояний между ними. Нам понадобятся:

таблица Google Docs;
несколько базовых выражений на xPath для формулы importxml.

Вначале находим сайт, на котором есть необходимая нам информация. Вводим два города, а расстояние должно расположиться в третьей ячейке таблицы. Что сделать, чтобы спарсить часть нужной нам информации в таблицу Google? Использовать importxml. Определяем, в каких HTML-тегах заключена нужная нам информация

1. Кликаем правой кнопкой мыши на заголовке с расстоянием и выбираем «Просмотр кода элемента». Необходимая строка заключена в html-тэге h1.


2. Проверяем адрес страницы — он имеет подходящий вид (marshrut.su/rasstojanie/mezhdu-gorodami/mezhdu-gorodami?ot=Астана&do=Варшава).


3. Формируем URL с помощью оператора «concatenate» — склеиваем части адреса и введенные нами города.


=concatenate(""marshrut.su/rasstojanie/mezhdu-gorodami/?ot="";A3;""&do="";B3)

4. Используем «importxml» — первым аргументом будет «concatenate» (формируемый им URL), вторым — простое выражение на xPath — «//h1». Так мы указали, что необходимо спарсить в ячейку таблицы все заголовки h1. Нам повезло — такой заголовок используется один раз на странице, поэтому нам не придется обрабатывать массив данных.


=importxml(concatenate(""marshrut.su/rasstojanie/mezhdu-gorodami/?ot="";A3;""&do="";B3); ""//h1"")

5. Получаем всю строку «Расстояние от… до… км». Обрезаем лишнее из этой строки с помощью «mid». Чтобы вычислить длину отрезка, который необходимо сократить, определим длины названий городов с помощью «len» и просуммируем с длинами других слов. Получаем конечную формулу:


=mid(importxml(concatenate(""marshrut.su/rasstojanie/mezhdu-gorodami/?ot="";A3;""&do="";B3); ""//h1"");len(B3)+len(A3)+19;10)

Теперь можем ввести сколько угодно пар городов, «протянуть» ячейку C2 вниз и моментально получить все расстояния между этими городами.

Формула парсинга расстояния между городами в Google SpreadSheets

{""0"":{""lid"":""1573230077755"",""ls"":""10"",""loff"":"""",""li_type"":""em"",""li_name"":""email"",""li_ph"":""Email"",""li_req"":""y"",""li_nm"":""email""},""1"":{""lid"":""1596820612019"",""ls"":""20"",""loff"":"""",""li_type"":""hd"",""li_name"":""country_code"",""li_nm"":""country_code""}}
Истории бизнеса и полезные фишки

Парсинг данных с помощью importhtml

Нам понадобится:

только таблица Google Docs.

Можно получать данные без знания xPath — через importhtml. Для использования этой формулы достаточно указать URL, тип (таблица или список) и номер. Формула импортирует массив данных, с которым дальше можно будет работать при помощи формул таблиц Google.

Формулы парсинга работают не всегда, все зависит от верстки страницы. Если importxml не подходит — пробуйте importhtml. Если и он не работает — используйте Kimono. А можно и вовсе начать с Kimono.

Парсинг данных с помощью Kimono

Существует множество программ, скриптов или приложений для браузера, основная функция которых — сбор данных из сети (парсинг) и их структурирование. Такие программы называются скрейперы, или scrapers.

Kimono — мощный и быстрый в настройке скрейпер с интуитивно понятным интерфейсом. Позволяет парсить данные с других сайтов и позже обновлять их. Бесплатный.

Познакомиться поближе и получить краткий мануал об использовании можно здесь (на русском) или на moz (на английском). Давайте попробуем спарсить что-нибудь хорошее с помощью Kimono. Например, дополним созданную нами таблицу с городами списком курортов в стране Города 2. Как это можно реализовать при помощи Kimono Labs. Нам понадобятся:

приложение для Google Chrome — Kimono;
таблица Google Docs.

1. Находим сайт с необходимой нам информацией — то есть перечнем стран и их курортов. Открываем страницу, откуда необходимо получить данные.

2. Кликаем на иконку Kimono в правом верхнем углу Chrome.

3. Выделяем те части страницы, данные из которых нам необходимо спарсить. Если нужно выделить новый тип данных на той же странице, кликаем на «+» справа от «property 1» — так указываем Kimono, что эти данные нужно разместить в новом столбце.

Все страны на странице выделены с помощью Kimono (приложение Chrome)


4. Кликнув на фигурные скобки и выбрав «CSV», можно увидеть, как выбранные данные будут располагаться в таблице.

Предварительный просмотр расположения данных в таблице


5. Когда все данные отмечены:

кликаем «Done» (в правом верхнем углу);
логинимся в Kimono, чтобы привязать API к своему аккаунту;
вводим название будущего АРI;
кликаем «Create API».

Создаем новое API в Kimono

6. Когда API создано, переходим в таблицу Google, куда хотим загрузить выбранные данные. Выбираем «Connect to Kimono» и кликаем на название нашего API — «Resorts». Список стран и ссылок на страницы с курортными городами выгружается на отдельный лист.

Синхронизируем Kimono с Google SpreadSheets


После синхронизации Kimono выгружает данные на отдельный лист


7. Переходим снова на сайт, берем для примера Ирландию, и снова выбираем через Kimono города, которые необходимо спарсить. Создаем API, называем его «Resorts in countries». Задаем Kimono шаблон для парсинга


8. Переходим по ссылке в Kimono Labs. Теперь нам нужно спарсить список курортных городов по всем странам, а не только по Ирландии. Чтобы это сделать, переходим на вкладку «Crawl setup».

Расположение вкладки по настройкам обхода страниц в Kimono Labs


9. В «Crawl Strategy» выбираем «URLs from source API». Появляется поле с выпадающим списком всех API. Выбираем созданное нами ранее API «Resorts» и из него автоматически загружается список URL для парсинга. Кликаем синюю кнопку «Start Crawl» (начать обход) и следим за статусом парсинга. Kimono обходит страницы, парсит данные по заданному ранее шаблону и добавляет их в таблицу — то есть делает все то же самое, что и для Ирландии, но уже для всех других стран, что ввели автоматически и без нашего участия.

Как добавить в Kimono список URL для парсинга, используя уже существующий API


10. Когда таблица сформирована, синхронизируем Kimono Labs с таблицей Google — точно так же, как делали это в шестом пункте. В результате, в таблице появляется второй лист с данными.


Выгружаем полученные данные из Kimono Labs в Google SpreadSheets.


Предположим, хотим, чтобы в таблице отображались все курортные города в стране города прибытия. Данные на листах Kimono обрабатываем с помощью формул для таблиц Google, и выводим в строку список городов, где еще можно отдохнуть в Австралии, кроме Сиднея.


Например, это можно сделать так. Разметить массив данных (список городов), используя логические функции и возвращая значение ячейке, равное TRUE или FALSE. На примере ниже выделили для себя города, которые находятся именно в Австралии:

TRUE = город находится в Австралии;
FALSE = город находится в другой стране.

Выделение необходимой части данных из всего массива с помощью формул таблиц Google


По меткам TRUE определяем начало и конец обрабатываемого диапазона, и выводим в строку соответствующие этому диапазону города.


Конечная обработка данных



Отображаемый результат


По аналогии можем вывести курортные города и для других стран.

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

Результаты автоматизации

Как говорилось вначале, нам регулярно нужно составлять по 20 однотипных таблиц. Это рутинный процесс, съедающий по 40-50 минут на одну таблицу, и по 16 часов времени на каждые 20 шт. Согласитесь, 2 рабочих дня на одинаковые таблички — необоснованная трата времени. После автоматизации на одну таблицу уходит 5-10 минут, а на 20 — около 2 часов. Таблица имеет 17 ячеек, парсинг производится из 5 источников. Заполнение таблицы происходит автоматически при заполнении всего 2 ячеек с исходными данными.


Настройка и автоматизация парсинга суммарно заняла 30 часов времени, то есть потраченное время «окупится» уже на этапе генерации второй 20-ки таблиц.



Автоматизация парсинга больших объемов данных и их обработки дает хорошие результаты. В нашем случае, на составлении каждых 20 таблиц экономим 14 часов рабочего времени специалистов, и приличную сумму клиентских средств :)


Полезные ссылки:

список функций Таблиц Google;
8 плагинов для Google Chrome в помощь SEO-специалистам.

Возникли вопросы или что-то не получается? Будем рады помочь в комментариях.

UPD: 18.02.2016. Облачный сервис Kimono закрывается 29 февраля 2016. С этого дня данные на kimonolabs не будут доступны. На описанный в статье метод апдейт не повлияет. Для парсинга остается приложение Chrome.

Нужен парсинг данных?

Собираем открытые данные с любых веб-сайтов: цены, названия, артикулы, описания, свойства, категории, фото, отзывы, ссылки, тел.номера, e-mail и многое другое.

Написать
img