使用 ImportXml 在 Google Sheets 中抓取图像

2024-04-29

我正在使用 Google Sheets 尝试从房地产网站上抓取图像,以将其显示在单元格中以及房产详细信息旁边。我已经能够使用一个简单的示例证明这是可能的,但是当我尝试制定 xpath 查询来抓取我需要的特定图像时,我不断收到错误。

作为一个工作示例,我将使用这个网页 https://www.jelliscraig.com.au/property-details-228A-Victoria-Street-Ballarat-East/1042039.

在我的示例中,ImportXML 命令中的单元格引用始终指向此 URL。

我想要的图像是滑块的一部分,并且可以通过其类别轻松识别:'rsImg rsMainSlideImage'

我尝试使用以下命令来抓取滑块中的第一张图像:

=IMPORTXML(A2, "(//img[@class='rsImg rsMainSlideImage'])[1]/@src")

我不断收到错误:

"Imported content is empty"

为了诊断问题,我做了一个更简单的例子:

我可以使用以下 xPath 从页面获取第一张图像(不是我的目标图像):

=IMPORTXML(A2, "(//img)[1]/@src")

这样就成功显示了图像的 URL。

我可以通过将其包装在图像命令中来在单元格中显示该图像:

=image(IMPORTXML(A2, "(//img)[1]/@src"))

这表明原则上我应该能够抓取图像并将其显示在单元格中。

但我无法使用该类选择我要定位的图像而不会出现错误。 这是我使用的命令:

=IMPORTXML(A2, "(//img[@class='rsImg rsMainSlideImage'])[1]/@src")

除了根据类属性选择图像之外,我不确定有效的示例和无效的示例之间有什么区别。

我将非常感谢任何让这项工作顺利进行的支持。


问题出在网站上

您的 xpath 看起来不错,但网站 HTML 却不行!

如果您在此网站上使用 HTML 验证器:

https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.jelliscraig.com.au%2Fproperty-details-228A-Victoria-Street-Ballarat-East%2F1042039 https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.jelliscraig.com.au%2Fproperty-details-228A-Victoria-Street-Ballarat-East%2F1042039

您将看到它有很多错误,对于 XML 来说最严重的是,它有杂散标签。因此,在大多数情况下,XML 解析器要么会感到困惑,要么将其视为无效而拒绝。

我尝试了一堆不同的 xpath 但找不到任何img标记任何地方,即使为所有内容创建 x 路径/ or /*- 这告诉我这个 HTML 可能格式不正确,XML 解析器无法读取它。

解决方法

=REGEXEXTRACT(
    IMPORTXML(
        "https://www.jelliscraig.com.au/property-details-228A-Victoria-Street-Ballarat-East/1042039",
        "/"
    ),
    "https:\/\/images\.listonce.+\.jpg"
)

通过查看结果我发现了什么/x-path 的问题是该链接似乎在其他几个地方被引用。也许这对于大多数网站来说都是一致的,并且最有可能的是,所有图像都由相同的 URL 格式提供:

https://images.listonce.com.au ... jpg

因此,使用此信息您可以包装IMPORTXML in a REGEXEXTRACT https://support.google.com/docs/answer/3098244并使用松散的正则表达式,例如:

https:\/\/images\.listonce.+\.jpg

对于您提供的示例 URL,将返回:

https://images.listonce.com.au/custom/m/listings/228a-victoria-street-ballarat-east-vic-3350/039/01042039_img_01.jpg https://images.listonce.com.au/custom/m/listings/228a-victoria-street-ballarat-east-vic-3350/039/01042039_img_01.jpg

这似乎就是您正在寻找的图像。

应用程序脚本

也许调查一下应用程序脚本 https://developers.google.com/apps-script/overview特别是网址获取应用程序 https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app。使用这些工具,您将可以更好地控制所获取的 HTML,并为您提供更多的数据抓取选项。

这是相同流程但使用 Apps 脚本的示例

function getImageUrl() {
  // Fetch the website
  let response = UrlFetchApp.fetch("https://www.jelliscraig.com.au/property-details-228A-Victoria-Street-Ballarat-East/1042039")
  // Get the text from the response
  let html = response.getContentText()
  // Use Regex to Match the Tag
  let result = html.match(/(?<=img src=.+)https:\/\/images.listonce.com.au\/.+\.jpg/)
  // Log the first result
  Logger.log(result[0])
}

哪个会记录https://images.listonce.com.au/custom/l/listings/228a-victoria-street-ballarat-east-vic-3350/039/01042039_img_01.jpg

参考

  • REGEXEXTRACT https://support.google.com/docs/answer/3098244
  • Apps 脚本概述 https://developers.google.com/apps-script/overview
  • 网址获取应用程序 https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ImportXml 在 Google Sheets 中抓取图像 的相关文章

  • Python - 如何将列表保存为图像?

    我生成一个常规列表 是否可以将此列表保存为 JPEG 图像或 PNG 或其他格式 以便我可以打开图像并查看它 我目前正在尝试使用 python 成像库 PIL 来解决这个问题 这是可能的解决方案之一 使用以下方法创建一个空图像对象 Imag
  • 调整回形针大小以适合矩形框

    我有一个矩形图像 例如 30x800 像素 如何用回形针缩放它以保留 100x100 像素图像的纵横比 并用边框填充空白区域 一个例子 http www imagemagick org Usage thumbnails pad extent
  • WPF 无法从 url 检索 WebP 图像?

    我无法从网址检索图像 以前 在设置 HttpClient 标头之前 我根本无法连接到该站点 我可以从其他来源检索图像 但不能从这个特定来源检索图像 检索图像的代码 var img new BitmapImage img BeginInit
  • 从项目文件加载图像

    我正在尝试获取 png 图像 这是我的资源文件夹 我测试了这里写的解决方案 将图像添加到列表框 c Windows Phone 7 https stackoverflow com questions 9348766 add images t
  • 将数据从 Google Drive 中的 CSV 文件导入到 Google Sheet

    我使用 SAS 每 24 小时生成两个 CSV 文件 我使用 bat 脚本将生成的 CSV 文件保存在 Google Drive 的文件夹中 CSV 文件被替换 因此文件夹中始终只有这两个文件 CSV 文件以 分隔 并且仅包含三列或四列 我
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • 如何使用 Google Sheets onEdit() 触发器运行函数来更新 Google Form

    我有一个 Google 表格工作簿 其中有一个工作表 我想用它来保存工作簿和 Google 表单的设置 我做了一个定制onEdit 触发两个函数的函数 一个用于更新工作簿 另一个用于更新表单 function onEdit e var ra
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • Xpath 获取 if href 包含字符串的一部分

    您好 我尝试获取包含 href p random tagged see 的所有元素 这是我的路线 div preceding h2 text Most recent div div a href p tagged see 我该如何修复此代码
  • 了解客户端文件的对象 URL 以及如何释放内存

    我在用createObjectURL获取本地图像文件的引用 URL 当我完成文件 图像后 我打电话revokeObjectURL释放该内存 一切对我来说都很好 但我只是想确保我释放了我能释放的所有内存 我检查后出现了我的担忧chrome b
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 在python中将二维数组转换为彩色图像

    我有这样的二维整数列表 list1 1 30 50 21 45 9 97 321 100 接下来我将把它转换为 numpy 数组 myarr np asarray list1 接下来我将使用 PIL 将其转换为图像 如下所示 img Ima
  • 无法通过电子应用程序在discordjs上发送附加到消息的图像

    我正在尝试为我使用discordjs 编写的discord 机器人构建图形界面 但是 我在发送图像时遇到了问题 这是我的代码中负责向用户发送消息的部分 utilsateur createDM then channeltemp gt let
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 使用无图像按钮有哪些优点?

    讨论关于这个答案 https stackoverflow com questions 520640 how can i use googles new imageless button how could i reverse enginee
  • 如何将图像显示为缩略图

    我有一个QTreeView显示硬盘驱动器和目录 我也有一个QListView显示图像文件如下 但我想将图像显示为缩略图 如下所示 My code mainWidget mainWidget QWidget parent QWidget pa
  • 谷歌电子表格中的“MMMM yy”日期

    我有一个谷歌电子表格 其中我想要一个仅包含月份和年份名称的日期 例如September 2011 而且我还希望月份和年份能够轻松更改 有没有办法获得自定义日期格式来做到这一点 我发现我可以这样做 TEXT 40295 MMMM yy 但是日
  • 如何求Google电子表格中每列的最大值之和?

    我有一个谷歌数字电子表格 如何从每列中获取最大值 并仅使用one公式 没有临时单元 没有脚本 1 2 1 0 1 3 0 2 0 对于上表 结果应为 6 1 2 3 每列的最大值 但我想要一个也适用于更大的表的解决方案 作为一个更普遍的问题
  • 从部分 XPath 获取完整 XPath

    我正在使用 selenium 和 perl 并在页面上有标签 要访问此标签 我有以下 xpath text some here 需要获取该元素的完整 xpath 的问题 例如 html body table tr any other and

随机推荐