Задать вопрос

Возможно ли извлечь данные через =IMPORTXML с Wildberries?

Доброго времени. Подскажите, возможно ли извлечь данные через =IMPORTXML с Wildberries?
В моем случае интересует цена товара.

Пробую использовать вот такую формулу, где А6 ячейка с ссылкой: https://www.wildberries.ru/catalog/137967058/detai...

=IMPORTXML(A6; "//*[@id='3594730a-821a-36b6-f1d4-688f8bbdfde0']/div[3]/div[9]/div/div[1]/div[1]/div/div/p/span/ins")

(вообще я разные разные варианты xpath пробовал)

Хочу извлечь данные вот отсюда - https://i.imgur.com/0iKaWba.png
В итоге при выполнении отдает "Нет данных для импорта"
Я так понимаю тут дело в специфике отображения контента на сайте для пользователя?
Есть ли какие-то еще простые варианты вытянуть цены?
  • Вопрос задан
  • 766 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Нет

Как проверить можно ли использовать скрипты и формулы Google для получения данных https://t.me/contributor_pw/299
Ответ написан
Комментировать
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Не уверен что можно, а если можно, что это хорошая идея. Вёрстка меняется периодически и данные слетают.
Для этого разработан официальный API, через него можно забирать почти всё что душа пожелает. В реальной работе парсинг WB страниц тоже используется, но не как основной метод.
Если сильно хочется - посмотрите что видит гугл, когда запрашивает данные

/**
* Открывает URL и возращает код страницы
* Telegram - @ProgrammerForever
*
* @param {string} URL URL который нужно открыть
* @param {boolean} isCut Указывакт, нужно ли обрезать страницу до 50000 символов по длине, по умолчанию false
* @param {boolean} noScript Указывакт, нужно ли удалять скрипты из кода
* @return Исходный код страницы
* @customfunction
*/
function getHTML(URL,isCut,noScript) {
  if ((URL === undefined)||(URL == "")) { return "#ОШИБКА Пустой URL";};
  if (isCut === undefined) {var isCut=true;};
  if (noScript === undefined) {var noScript=true;};
  if (URL.map){     //Если задан диапазон
    return URL.map(getHTML);
  }else{
    try {
      var payload = {
        'rand':(new Date()).getTime()
      };
      var headers={
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        'Upgrade-Insecure-Requests': 1,
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'
      };
      var options = {
        'method' : 'get',
        'headers' : headers,
        'payload': payload
      };
      
      var response = UrlFetchApp.fetch(URL,options);
      var charset=response.getAllHeaders["charset"];
      //var responseText=response.getContentText(charset?charset:"windows-1251");
      var responseText=response.getContentText(charset?charset:"UTF-8");
      if (noScript){ 
        responseText=responseText.replace(/<script[^>]*>(?:(?!<\/script>)[^])*<\/script>/gmi,"");
        responseText=responseText.replace(/<!--.*?-->/gmi,"");
        responseText=responseText.replace(/<link.*?\/>/gmi,"");
        responseText=responseText.replace(/<meta.*?\/>/gmi,"");
        responseText=responseText.replace(/[\n\r\t]/gmi,"");
        
      };
      if (isCut&&(responseText.length>50000)){return responseText.substring(0,50000);}else{return responseText;};
    } catch (err) {
      //return JSON.stringify(err);
      return "#ОШИБКА "+err.message;
    };
  };
};


Или в IMPORTXML поставить * в запросе
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы