使用Regex代替ImportXML将Google搜索结果引入Google表格

时间:2019-05-21 18:04:30

标签: regex web-scraping google-sheets google-sheets-importxml

我正在Google表格中跟踪Google搜索结果的关键字。

使用importXML时,由于使用一定数量后在单元格中出现#N / A,我可以导入的XML数量受到限制。

我通过@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(信贷至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"))

如果有帮助,我已使用importregex脚本here

放置了指向Google工作表的链接。

0 个答案:

没有答案