Я пытаюсь вернуть заголовок, теги 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.
Я новичок в сценариях приложений и регулярных выражениях, и было бы здорово, если бы я мог получить некоторые подсказки.
СПАСИБО!
@Guac HO.LY.SHIT. Это просто спасло мой день. и весь день моих коллег. Большое спасибо. Отмечено для использования в будущем.
@Guac Рассмотрите возможность добавления ответа
С обновленным выражением регулярного выражения код будет выглядеть так:
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), что включает разрывы строк.
Я думаю, это потому, что . в регулярном выражении не включает разрывы строк. Но разрывы строк можно включить, заменив . на (.|\n|\r). Таким образом, все выражение будет выглядеть так: /<title[^>]*?>(.|\n|\r)*?</title>|.*<h[1-6][^>]*?>(.|\n|\r)*?</h[1-6]>|<p[^>]*?>(.|\n|\r)*?</p>/gi