SEO и оптимизация, Обо всём, Полезное

Парсинг изображений для прайс листа csv из 1кк позиций

Пилю сайт на WP + woocommerce.

Получил прайс-лист, из миллиона позиций(строк). К моему сожалению, в прайсе есть название, бренд, артикул, но нету изображений. Знал про importHTML и importXML в Google Sheets, о которых прочитал у АлаиЧа.
По сути, ничего сложного, отправить запрос в Google и получить ссылку на картинку(на первую картинку по данному запросу). Но на практике, как всегда, появились подводные камни. Вспомнил, что пару лет назад(а может и меньше) Google и Яндекс закрыли ссылки на изображения на выдаче в сервисах поиска картинок. Более того, то, что вы ведите в исходном коде страницы, и то, что вы ведите “проинспектировав” элемент – разные коды. Вот пример:

Открывая исходных код view-source:https://yandex.ru/images/search?text=asd

В Google – такая же история. Это первый нюанс. А второй заключается в том – что это не совсем ссылка на картинку. Но ссылки там все таки имеются:

Другое дело – даже их никак не подцепить. В этом момент я опять отчаялся, и решил вернуться работать с Google. но мои попытки были тщетны – там абсолютная такая же история. А потом я вспомнил, что на Яндекс и Google не заканчивается поисковые системы. Так вот, поэкспериментировав с Rambler, у меня получилось достать ссылки на картинки, пришлось написать чудную функцию в Google Sheets.

Вот план:

1. Открываем ссылку поиска картинок рамблера:

https://images.rambler.ru/search?

2. Выбираем первую картинку и видим вот такую ссылку – https://images.rambler.ru/search?query=asd&i=0
Давайте разберемся что тут:
https://images.rambler.ru/search?query= – ссылка поиска, без самого запроса. После = необходимо добавить артикул(название+артикул) или что еще вам нужно.

&i=0 – то, какую позицию выбрали. Так как в программирование расчет начинается с нуля, то первый элемент i=0

3. Не стоит забывать, что пробелы кодируются в символ %20 (Это нужно помнить, что бы правильно собрать URL). В Sheets необходимо использовать функцию SUBSTITUTE для замены какого либо символа в ячейке. В нашем случае SUBSTITUTE(“А тут та ячейка, где например название бренда или товара, в котором может быть пробел”;” “;”%20”). А так же формулу СЦЕПИТЬ, но в Sheets она CONCATENATE

4. Откроем исходный код страницы с выбранной первой картинкой – view-source:https://images.rambler.ru/search?query=asd&i=0

Тут мы видим ссылку на картинку прям в микроразметке сайта:

5. Нам необходимо получить значение атрибута content тега meta со свойством property=’og:image’.

В моем случае, итог формулы выглядит вот так: =importxml(CONCATENATE($I$1;SUBSTITUTE(A2;” “;”%20″);$H$1;B2;$H$1;SUBSTITUTE(C2;” “;”%20″);$J$1);”//meta[@property=’og:image’]/@content”)

Если коротко – тут я взял с трех ячеек значения(бренд, артикул, название) заменил пробелы, связал, сделал запрос в Rambler, и получил значение параметра content тега meta с свойством property=’og:image’ или другими словами – ссылку на первую картинку.

Огромный минус данного способа – время. Google отправляет(насколько мне известно) 100 запросов потом таймаут. Более того, таймаут ответа есть и у Рамблера. Но с другой стороны – протянул формулу до конца документа – и пусть он собирает картинки неделю, сам. Кстати, пробовал юзать PictureYandexGraber или такой же аналог только под Google, но это все не то, т.к. нужны были просто ссылки на картинки, причем в документе Exel. ( Ну давай по умничай мне тут в комментах, как ты будешь миллион документов открывать и вручную ссылку вставлять в прайс-лист).

P.S. Может я тупой, не знаю нормального быстрого способа? Расскажи мне, в комментариях, я обязательно это прочитаю, но это не точно.

Похожие записи:

Поддержать автора:

8 Comments

  1. Попробуй

    1. Взять карту сайта, вытащить оттуда все ссылки на товары
    2. Скормить их screaming frog
    3. Там есть режим extraction, который по xpath вытягивает данные. Посмотри в коде страниц ссылки на картинки, скопируй xpath, добавь в поле в extraction
    4. Аналогично для артикула
    5. Спарси все это дело, потом через впр сопоставь в Экселе.

    Хз будем работать на больших объемах или нет – тестил до 5к позиций. Топорно, но работает.

      1. Функция ВПР в экселе, она же vlookup – для сопоставления данных. Чтобы у тебя по артикулам (которые в прайсе поставщика) подтянулись нужные картинки из той таблицы, что ты парсил жабой.

  2. 1кк s WP+Wocommerce??

    ахахаххахахахха

    Ты просто не представляешь какой пиздец начинается после 35к позиций – у тебя тупо не хватит места для базы.

    (по теме – любой браузерный двиг – зенка, bas, selenium)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *