Вернуть все теги <p> и <h> со скриптом приложения

Я пытаюсь вернуть заголовок, теги H и теги P на веб-странице, используя скрипт приложений в электронной таблице Google.

Я попробовал эту функцию, но, похоже, она не извлекает некоторые теги в зависимости от источника.

function myfunction(url) {
  var _options = {
    method: "GET"
  };

  try {
    var _response = UrlFetchApp.fetch(url, _options);
    var _regexp =  /<title[^>]*?>(.*?)</title>|.*<h[1-6][^>]*?>(.*?)</h[1-6]>|<p[^>]*?>.*?</p>/gi;
        var _tag = _response.getContentText().match(_regexp);

    return _tag;
  } catch (e) {
    return e;
  }
}

Например этот сайт не возвращает тег H1.

Я новичок в сценариях приложений и регулярных выражениях, и было бы здорово, если бы я мог получить некоторые подсказки.

СПАСИБО!

Я думаю, это потому, что . в регулярном выражении не включает разрывы строк. Но разрывы строк можно включить, заменив . на (.|\n|\r). Таким образом, все выражение будет выглядеть так: /<title[^>]*?>(.|\n|\r)*?</title>|.*<h[1-6][^>]*?>(.|\n|\r)‌​*?</h[1-6]>|<p[^>]*‌​?>(.|\n|\r)*?</p>/g‌​i

Guac 21.12.2020 10:44

@Guac HO.LY.SHIT. Это просто спасло мой день. и весь день моих коллег. Большое спасибо. Отмечено для использования в будущем.

Akane 22.12.2020 01:49

@Guac Рассмотрите возможность добавления ответа

TheMaster 22.12.2020 07:36
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
199
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С обновленным выражением регулярного выражения код будет выглядеть так:

function myfunction(url) {
  var _options = {
    method: "GET"
  };

  try {
    var _response = UrlFetchApp.fetch(url, _options);
    var _regexp =  /<title[^>]*?>(.|\n|\r)*?</title>|.*<h[1-6][^>]*?>(.|\n|\r)*?</h[1-6]>|<p[^>]*?>(.|\n|\r)*?</p>/gi;
        var _tag = _response.getContentText().match(_regexp);

    return _tag;
  } catch (e) {
    return e;
  }
}

Первоначальная проблема заключалась в том, что . в регулярном выражении не включает разрывы строк. Это было исправлено путем замены . на (.|\n|\r), что включает разрывы строк.

Другие вопросы по теме

Как получить значение ячейки пересечения двух именованных диапазонов в электронной таблице Google
Как я могу создать эквивалент взрыва(), ИСПОЛЬЗУЯ набор данных в каждом отдельном столбце, используя офис WPS или любые другие
Google Таблицы: условное форматирование в массиве на основе исходного столбца отдельного листа
Формула массива для вычисления среднего диапазона на основе критериев соответствия ячеек со связанными значениями в таблице
Поиск текущей серии побед в таблицах Google
Расчет на основе зависимого раскрывающегося списка с использованием двух источников
Поиск определенной строки для строки, возвращаемое значение 2 столбца справа от найденной строки
Как решить нулевой возврат?
Нужна альтернатива sumifs()/sum(filter())/sumproduct() для повышения производительности.
Поиск, соответствует ли первая запись в наборе данных определенной дате