使用 Google 工作表 IMPORTXML 时 URL/XPath 不正确
Incorrect URL/XPath when using Google sheets IMPORTXML
我正在尝试将搜索结果从 google 导入我的电子表格。我在维基百科页面上取得了成功,但由于某种原因,Google 搜索无法正常工作(出现 "could not fetch url" 错误)。我确定问题出在我的 URL 或 XPath 中,但我一直在尝试各种方法,但我迷路了。这是我得到的:
=IMPORTXML("https://www.google.com/search?q=dom+fera+easy+thing+released", "//div[@class='Z0LcW XcVN5d']")
我将下面的电子表格链接为仅供参考。最终目标是能够通过网络抓取发布多年的歌曲。如果有任何帮助,我将不胜感激!
https://docs.google.com/spreadsheets/d/1bt8MJ23nfGAv6ianaR-sd7DM5DNn98p7zWSG1UzBlEY/edit?usp=sharing
google 不支持 google 搜索到 google 工作表的网络抓取。此选项在 2 年前被禁用。您将需要使用替代搜索引擎
据我所知,您无法解析 Google 在 Google 表格中搜索的结果。
使用 Discogs、MusicBrainz、All Music... 获取发布日期可能很有用。
但似乎你们的一些团体鲜为人知。所以,您可以使用 Youtube 来获取日期。
注意:我们假定 Youtube 上的发布年份与发布年份相对应。
当然,这不是 100% 正确。例如,艺术家可以在发布几个月后剪辑他们的视频。或在 Youtube 上不发布任何内容。
所以这种方法适用于范围广泛的歌曲,但不适用于所有歌曲。最近的乐队和歌曲,应该可以吧
为此,您可以使用 Youtube API
或 IMPORTXML
公式。在这两种情况下,我们总是以搜索引擎的第一个结果(相关顺序)为来源。
您需要 API key and an ImportJSON script(感谢 Brad Jasper)才能使用 API 方法。安装脚本并激活 API 密钥后,您可以在单元格 B3 中粘贴:
="https://www.googleapis.com/youtube/v3/search?key={yourAPIKey}&part=snippet&type=video&filter=items®ionCode=FR&q="&ENCODEURL(A3)
我们生成 url 来查询您在 A 列中输入的内容。
我们使用 "regionCode=FR" 因为有些歌曲在美国不可用 ("i need you FMLYBND")。这样我们就能得到正确的发布日期。
在C3中,可以粘贴:
=LEFT(QUERY(ImportJSON(B3);"SELECT Col11 LIMIT 1 label Col11''";1);4)
我们解析 JSON、select 感兴趣的列、感兴趣的行,然后清理结果。
用IMPORTXML
的方法,可以在E3粘贴:
="https://www.youtube.com"&IMPORTXML("https://www.youtube.com/results?search_query="&A3;"(//div[@class='yt-lockup-thumbnail contains-addto'])[3]/a/@href")
我们用搜索引擎的第一个搜索结果构造url
在F3中,您可以粘贴:
=LEFT(IMPORTXML(E3;"//meta[@itemprop='datePublished']/@content");4)
我们解析之前构建的 url,然后我们提取出版年份。
如您所见,第 5 行的结果有所不同。那是因为这首歌在美国不可用。 IMPORTXML
方法返回的第一个结果不同于使用 "FR" 标志的 API
方法。
旁注:我住在欧洲。所以 ”;”公式中的应替换为“,”。
我正在尝试将搜索结果从 google 导入我的电子表格。我在维基百科页面上取得了成功,但由于某种原因,Google 搜索无法正常工作(出现 "could not fetch url" 错误)。我确定问题出在我的 URL 或 XPath 中,但我一直在尝试各种方法,但我迷路了。这是我得到的:
=IMPORTXML("https://www.google.com/search?q=dom+fera+easy+thing+released", "//div[@class='Z0LcW XcVN5d']")
我将下面的电子表格链接为仅供参考。最终目标是能够通过网络抓取发布多年的歌曲。如果有任何帮助,我将不胜感激!
https://docs.google.com/spreadsheets/d/1bt8MJ23nfGAv6ianaR-sd7DM5DNn98p7zWSG1UzBlEY/edit?usp=sharing
google 不支持 google 搜索到 google 工作表的网络抓取。此选项在 2 年前被禁用。您将需要使用替代搜索引擎
据我所知,您无法解析 Google 在 Google 表格中搜索的结果。 使用 Discogs、MusicBrainz、All Music... 获取发布日期可能很有用。 但似乎你们的一些团体鲜为人知。所以,您可以使用 Youtube 来获取日期。
注意:我们假定 Youtube 上的发布年份与发布年份相对应。 当然,这不是 100% 正确。例如,艺术家可以在发布几个月后剪辑他们的视频。或在 Youtube 上不发布任何内容。 所以这种方法适用于范围广泛的歌曲,但不适用于所有歌曲。最近的乐队和歌曲,应该可以吧
为此,您可以使用 Youtube API
或 IMPORTXML
公式。在这两种情况下,我们总是以搜索引擎的第一个结果(相关顺序)为来源。
您需要 API key and an ImportJSON script(感谢 Brad Jasper)才能使用 API 方法。安装脚本并激活 API 密钥后,您可以在单元格 B3 中粘贴:
="https://www.googleapis.com/youtube/v3/search?key={yourAPIKey}&part=snippet&type=video&filter=items®ionCode=FR&q="&ENCODEURL(A3)
我们生成 url 来查询您在 A 列中输入的内容。 我们使用 "regionCode=FR" 因为有些歌曲在美国不可用 ("i need you FMLYBND")。这样我们就能得到正确的发布日期。
在C3中,可以粘贴:
=LEFT(QUERY(ImportJSON(B3);"SELECT Col11 LIMIT 1 label Col11''";1);4)
我们解析 JSON、select 感兴趣的列、感兴趣的行,然后清理结果。
用IMPORTXML
的方法,可以在E3粘贴:
="https://www.youtube.com"&IMPORTXML("https://www.youtube.com/results?search_query="&A3;"(//div[@class='yt-lockup-thumbnail contains-addto'])[3]/a/@href")
我们用搜索引擎的第一个搜索结果构造url
在F3中,您可以粘贴:
=LEFT(IMPORTXML(E3;"//meta[@itemprop='datePublished']/@content");4)
我们解析之前构建的 url,然后我们提取出版年份。
如您所见,第 5 行的结果有所不同。那是因为这首歌在美国不可用。 IMPORTXML
方法返回的第一个结果不同于使用 "FR" 标志的 API
方法。
旁注:我住在欧洲。所以 ”;”公式中的应替换为“,”。