1

我读过一篇文章,解释了如何在 Google 表格中使用 importXML() 函数访问网页、从中抓取数据并将结果放入单元格中。例如,如果我在单元格 A1 中放置一个网站 URL,在单元格 A2 中放置以下公式:

=importxml(A1,"//meta[@name='description']/@content")

然后A2将在A1中指定的网页上显示元描述标签的内容。

我想使用类似的方法,但在单元格 A1 中放置一个 Google 查询。

我将以下公式(我在英国期刊的一篇文章中找到)复制到单元格 A1 中:

=ArrayFormula(regexreplace(regexextract(importxml("https://www.google.co.uk/search?q=trade+balance&pws=0&gl=UK&num=50","//h3[@class='r']/a/@href"), "http.*&sa\b"), "&sa", ""))

它填充了 50 行数据。

然后我将 num 参数更改为“num=20”,响应为“Could not fetch URL ...”

然后我在另一个单元格中输入了相同的公式,将 URL 替换为“ https://www.google.com ”,将 gl 参数替换为“gl=US”,响应再次为“Could not fetch URL ...”

所以看起来英国的谷歌可能会让你定期这样做,而美国的谷歌则不允许。

任何人都可以提出替代方案吗?您是否需要密钥才能获得权限?

顺便说一句 - 我在一个论坛上读到,您可以使用 Google 的自定义搜索 API 和 UrlFetch() 来收集搜索结果并填充 Google 表格。但在尝试之前,我想我首先询问使用 importXML 的可能性。

谢谢你。

4

1 回答 1

1

Google 最近一直在阻止来自 Apps Scripts 和 Google Sheets 的搜索请求,尽管这些请求是来自他们自己的 IP 之一。他们可能这样做是为了防止刮擦。在某些情况下它可以工作并且您可以抓取 Google 搜索,但是,它有时间限制,因此结果会在几分钟/几小时后消失。您可以尝试抓取 Bing、DuckDuckGo 或其他搜索引擎。

于 2019-03-05T08:37:18.440 回答