【问题标题】:Error - Could not fetch url: https://www.google.com/search?num=20&q="searchquery"错误 - 无法获取网址:https://www.google.com/search?num=20&q="searchquery"
【发布时间】:2026-01-22 17:45:01
【问题描述】:

背景

我正在使用 Google 表格检查一系列字符串是否出现在 Google 搜索中:

=IMPORTXML(CONCATENATE("https://www.google.com/search?num=20&q=",CHAR(34), A1, CHAR(34)), CONCATENATE("count(//span[contains(., '",A1,"')])")),"THINKING")

一旦返回计数,下一个单元格将执行相同的过程,依此类推。

问题

但是,在不同数量的查询之后,下一个单元格显示:

错误 - 无法获取网址: https://www.google.com/search?num=20&q="搜索查询"

尝试的解决方案

我已尝试找出原因,但到目前为止还找不到。需要指出的几点:

  • 这在大约 1.5 个月前曾经完美运行 - 不知道从那时起 Google 方面发生了什么变化
  • 有时这发生在第一个查询中,表明问题可能与请求频率无关。
  • 此外,同样的任务在一个月前运行良好,通过数百个请求级联。我试过在旧的 Google 表格上运行它,但仅限于 50 个 XML 请求。

有什么想法吗?

【问题讨论】:

  • 请举例说明单元格A1的内容。更好的是,一个触发了您描述的错误的示例,如果您能找出发生了什么 - 与一个没有发生的示例相比。
  • 顺便说一下,据我所知,新的表格也仅限于 50 次调用 IMPORTXML() - 不是吗?
  • Mathias:我相信不是——我以前从来没有遇到过这个问题,我已经让它在一张表中处理数千个调用。至于A1内容的例子,都是标准的字符串,比如“阿迪达斯”。

标签: xml xpath web-scraping google-sheets google-sheets-importxml


【解决方案1】:

在 XPath 表达式的末尾有一个字符串“THINKING”——我认为它不应该存在。

=IMPORTXML(CONCATENATE("https://www.google.com/search?num=20&q=",CHAR(34), "Adidas", CHAR(34)), CONCATENATE("count(//span[contains(., '", "Adidas" ,"')])"))

也许您的意思是在对IMPORTXML() 的调用之外添加字符串“THINKING”?

但真正奇怪的是上面的公式返回

5

而相同的简化版本(取消串联):

=IMPORTXML("https://www.google.com/search?num=20&q='Adidas'", "count(//span[contains(., 'Adidas')])")

产量

6

【讨论】:

  • 谢谢你 - 你说得对。我没有意识到我可以在不添加 CHAR(34) 的情况下添加引号,尽管我也不完全确定为什么会有差异。但是,我仍然没有找到避免“NA:无法获取 url”错误的方法——它似乎在一天中的某些时间更频繁地发生,所以我假设这是一个服务器端问题。您是否知道如果第一次遇到错误,我可以自动让一个单元格重新执行 xmlimport?
  • @Sekoul 我同意您的公式没有错,并且众所周知,IMPORTXML() 在新表格中无论如何都异常错误。此外,在我看来,它还不够复杂,无法让您进行适当的错误处理,Apps Script 除外。
  • 太好了 - 我将重做 Apps 脚本上的所有内容以尝试处理错误。感谢您的帮助!
【解决方案2】:

我现在在使用 googlesheet 时遇到了同样的问题,允许在网站上使用 flash 解决了这个问题。

【讨论】:

    最近更新 更多