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

Как вывести данные с сайта c таблицами?

Есть сайт с которого необходимо вывести данные АПИ нет
только парсинг, пробовал через =IMPORTHTML и =IMPORTXML
пробывал так не выходит
в А6 сам сайт
=IMPORTXML(A6;"/html/body/div[2]/div[2]/div/div/div[1]/div[2]/div[2]/div/div/table/tbody/tr[3]/td[5]")
РЕЗУЛЬТАТ #Н/Д

=IMPORTXML(A6;"//td=@class['ng-binding']")РЕЗУЛЬАТ ЛОЖЬ

подскажите как быть именно с этого сайта не получается с альтернативных все успешно через Xpatch ?
  • Вопрос задан
  • 184 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • ProductStar
    Основы Google Sheets
    2 месяца
    Далее
  • Академия Eduson
    Excel и Google-таблицы: тариф PRO
    1 месяц
    Далее
  • Skillfactory
    Мастер Google таблиц
    4 недели
    Далее
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Попробуйте для начала такую конструкцию:
/**
* Открывает 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;
    };
  };
};

Если данные получаются вразумительные и то что нужно есть в выводе - то есть вариант распарсить. А так нужные данные могут грузиться дополнительными запросами или может стоять промежуточная защита, вплоть до капчи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Сбер Москва
от 200 000 до 350 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
UDS Media Санкт-Петербург
До 200 000 ₽