Парсинг изображений для прайс листа 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. Может я тупой, не знаю нормального быстрого способа? Расскажи мне, в комментариях, я обязательно это прочитаю, но это не точно. techcraunch.com

Комментариев: 8
  1. Евгений

    Попробуй

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

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

    1. believeindream (автор)
      Автор и Владелец данного блога. Автор канала SEO Бомж https://t.me/BumSeo

      Да, нормальная тема. Но там тоже есть много нюансов. А что в 5м пункте, «сопоставить через впр» — это что?

      1. Евгений

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

        1. believeindream (автор)
          Автор и Владелец данного блога. Автор канала SEO Бомж https://t.me/BumSeo

          Понял. Спасибо. Обязательно посмотрю

  2. Постный Вазелин

    многопоток в BrowserAutomationStudio

    1. believeindream (автор)
      Автор и Владелец данного блога. Автор канала SEO Бомж https://t.me/BumSeo

      Спасибо. Уже изучаю)

  3. seoonly.ru

    хьюмен эмулятор?

  4. {author[1]}

    1кк s WP+Wocommerce??

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

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

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

Добавить комментарий для believeindream Отменить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: