Как парсить, если ты не программист
Руководитель проектов Дмитрий Мирошниченко рассказывает, как быстро спарсить объявления конкурентов в «Яндекс.Директе» через Google Docs.
Не так давно мне нужно было быстро проанализировать пару сотен объявлений конкурентов в Яндекс.Директе. Собирать их вручную — так себе идея. В этой статье рассмотрим, как спарсить их через Google Docs, не обладая при этом навыками программирования.
Где и что смотреть?
Сами объявления можно посмотреть в выдаче:
Объявления Яндекс.Директа в поиске Яндекса.
Но в выдаче это всё смотреть и собирать неудобно. Раньше в Яндексе была ссылка «Все объявления по запросу». Теперь в общем доступе ее нет, зато по ней до сих пор можно пройти. Вот она: https://direct.yandex.ru/search?&text=запрос
Дополняем: https://direct.yandex.ru/search?&rid=213&text=запрос
«Rid» в ссылке — это номер региона, по которому смотрим запросы.»213» — код региона «Москва». Остальные можете нагуглить в поисковике: «список кодов региона яндекса».
Теперь смотрим все объявления по запросу «застройщики москвы и московской области». Видим краткую сводку по ним. Замечаем, что всего 74 объявления — конкурентная тема.
74 объявления по запросу «застройщики москвы и московской области».
Объявления разбиты на страницы по 20 штук. Это нужно учитывать при парсинге. Походив по страницам, видим структуру ссылок: https://direct.yandex.ru/search?&rid=213&text={запрос}&page={номер_страницы}
Вырисовывается схема по которой нам нужно пройтись:
1. Собрать интересующие запросы;
2. По каждому запросу зайти по адресу https://direct.yandex.ru/search?&text={запрос}&rid=213;
3. Узнать сколько есть страниц с объявлениями и пройтись по всем ссылкам https://direct.yandex.ru/search?&text={запрос}&rid=213&page={номер_страницы};
4. На каждой такой странице собрать нужную информацию.
Как искать признаки?
Для каждого элемента нам нужно найти признак уникальности, который его однозначно определяет в HTML коде. Это или тег, или цепочка вложенных тегов, или тег с определённым классом. Потом эти признаки покажем скрипту, чтобы он вытащил то, что нужно.
Для доступа к элементам внутри HTML используем язык запросов xpath. Как им пользоваться покажем на примере.
Пример:
Пройдёмся по всем нашим шагам:
- Итак, у нас есть список поисковых запросов:
1. застройщики москвы и московской области
2. новостройки москвы
3. новостройки подмосковья
4. планировка квартир по адресу - Берём первый запрос и переходим по ссылке
https://direct.yandex.ru/search?&text=новостройки+москвы+и+подмосковья&rid=213
- Смотрим код списка объявлений в инспекторе браузера, нажав F12. Видим, что у каждого элемента списка есть класс banner-selection. Его можно принять за признак того, что элемент включен в список:
Списки объявлений в инспекторе браузера, класс banner-selection можно взять за основу признака элемента списка.
Кстати, заголовков объявлений на странице не видно, но в коде они есть. Заголовок объявления находится внутри дивов с классами ad ad-link. Само объявление находится внутри тега div без классов.
Заголовок объявления находится внутри класса ad-link, текст объявления находится внутри тега div без классов.
В итоге мы определили по какому пути нам надо идти, и какие признаки у элементов которые нам надо спарсить.
Как парсить?
Напомню, заголовок объявления находится внутри дивов с классами ad ad-link. Структура для них div (ad) div (ad-link). Xpath запрос для него будет выглядеть так //div[@class='ad']/div[@class='ad-link']
Классы: ad ad-link
Теги с классами: div (ad) div (ad-link)
xpath запрос: //div[@class='ad']/div[@class='ad-link'
Тут важно понять принцип и усвоить синтаксис.
В гугл таблицах есть функция importxml, у неё два аргумента. Первый — ссылка, второй — запрос xpath.
В первую колонку вставляем нашу ссылку, во вторую функцию importxml.
-
https://direct.yandex.ru/search?&text=новостройки+москвы+и+подмосковья&rid=213
-
=importxml (A1;»//div[@class='ad']/div[@class='ad-link']»)
С помощью одной функции можно спарсить все заголовки в гугл докс.
Само объявление находится внутри тега div. У него нет никаких классов. В xpath запросе к нему можно обратиться по номеру.
Теги с классами: div (ad) второй div
xpath запрос: //div[@class='ad']/div[2]
В третью колонку вставляем функцию =importxml (A1;»//div[@class='ad']/div[2]»)
Все объявления с заголовками двумя формулами.
Чтобы потренироваться, сделайте копию моей таблицы.
Наши шаги:
1. Собрать интересующие запросы;
2. По каждому запросу зайти по адресу https://direct.yandex.ru/search?&text={запрос}&rid=213;
3. Узнать сколько есть страниц с объявлениями и пройтись по всем ссылкам https://direct.yandex.ru/search?&text={запрос}&rid=213&page={номер_страницы};
4. На каждой странице собрать заголовки и тексты объявлений с помощью xpath запросов в гугл таблице.
В следующей статье рассмотрим, как дополнительно парсить телефон, почту и сайт компании с помощью языка программирования Python. Следите за публикациями.
Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации.
Полный текст статьи читайте на Нетология