Внедрение результатов поиска Google в Google Sheets с использованием Regex вместо ImportXML - PullRequest
0 голосов
/ 21 мая 2019

Я отслеживаю ключевые слова для результатов поиска Google в листах Google.

При использовании importXML похоже, что я получаю ограничение на количество XML, которое я могу импортировать, поскольку я получаю # N / A в ячейках после определенного количества использования.

Я нашел этот нестандартный код @joshbradley, в котором используются нестандартные скрипты для использования регулярных выражений вместо XPath, что должно обойти любое ограничение. Кредит Джошу.

По сути это происходит в редакторе скриптов:

    function importRegex(url, regexInput) {
  var output = '';
  var fetchedUrl = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText();
    if (html.length && regexInput.length) {
      output = html.match(new RegExp(regexInput, 'i'))[1];
    }
  }
  // Grace period to avoid call limit
  Utilities.sleep(1000);
  return unescapeHTML(output);
}

Затем вы называете скрипт следующим образом

=importRegex("https://example.com", "<title>(.*)<\/title>")

Здесь я пытаюсь адаптировать следующий код, полученный из GDS (Credit to Tara), который выводит результаты поиска в Google, но использует приведенный выше подход importregex вместо importxml.

=ARRAYFORMULA(REGEXEXTRACT(IMPORTXML("https://www.google.co.uk/search?q="& SUBSTITUTE(B$1, " ", "+") &"&pws=0&gl=UK&num=50", "//h3[@class='r']/a/@href[contains(.,'url')]"), "\/url\?q=(.+)&sa\b"))

Обновление

Вот два подхода, которые я попробовал (второй имеет массив), но ни один не работает.

=importRegex("https://www.google.co.uk/search?q="& SUBSTITUTE(B$1, " ", "+") &"&pws=0&gl=UK&num=50", "//h3[@class='r']/a/@href[contains(.,'url')]"), "\/url\?q=(.+)&sa\b"))

=ARRAYFORMULA(REGEXEXTRACT(importRegex("https://www.google.co.uk/search?q="& SUBSTITUTE(B$1, " ", "+") &"&pws=0&gl=UK&num=50", "//h3[@class='r']/a/@href[contains(.,'url')]"), "\/url\?q=(.+)&sa\b"))

Если это поможет, я поместил ссылку на лист Google с работающим скриптом importregex здесь

...