使用 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 中抓取图像 的相关文章

  • 带有 jsessionid 的 R 网络抓取工具

    我正在 R 中测试一些网页抓取脚本 我已经阅读了很多教程 文档并尝试了不同的方法 但到目前为止还没有成功 我试图抓取的网址是this one http www dataescolabrasil inep gov br dataEscolaB
  • python编写的类爬虫抛出属性错误

    用 python 编写一些代码后 我陷入了深深的麻烦 我是按照 Python 中的 OOP 设计编写代码的新手 我在代码中使用的 xpath 是完美的 当通过 page crawler 类的实例运行 info grabber 类中的 pas
  • 在使用 Selenium 和 java 时在网格中应用过滤器后无法选择第一行[棘手的情况]

    我遇到了这种奇怪的情况 找了好久都没有成功 请问这是怎么回事 让我给你解释一下 我正在尝试在网页中创建自动化 我必须输入 动态表中的特定值以及执行 ENTER 事件后 需要选择显示的第一行 运行我的代码后 我得到了这个 但显示的行未被选择
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • Javascript 像素操作:这些不是我的颜色

    我知道类似的问题已经被问过好几次了 但我还没有找到我想要的东西 我正在将图像读入画布对象 在 JavaScript 中 并尝试操作一些特定的像素 例如 我正在寻找颜色 RGB 224 64 102 并尝试将其更改为其他颜色 我可以将灰度应用
  • 点击事件触发后不执行任何操作

    当我触发一个 click 在 puppeteer 中的非无头模式下发生的事件 没有任何反应 甚至没有错误 非无头模式 因此我可以直观地监视正在单击的内容 const scraper test async gt let browser pag
  • PHP imagettftext 返回的边界框与渲染的边界框不同

    我正在使用 imagettftext 渲染 PNG 文件 对 imagettftext 的调用返回渲染文本的边界框 但仔细检查后发现 文本的渲染稍微超出了它自己的边界框 边界框是正确的 我检查了图像的像素坐标 但文本位置不正确 它输出这个
  • 在应用程序脚本中将 .XLS 转换为 Google 表格的最有效方法是什么?

    我每周都会自动将 XLS 文件下载到 Google 云端硬盘 我想每周自动将最新下载的 XLS 文件转换为 Google 表格格式 因此转到特定的 Google 驱动器文件夹 查找最新或未转换的 XLS 文件 转换为 Google 表格格式
  • 在全屏 Android 中打开图像

    我的应用程序中有一个缩略图图像 我想显示全屏图像 就像它显示的那样 当您单击图库中的任何图像时 它会全屏显示 我怎样才能做到这一点 您可以启动图库应用程序本身来使用下面的代码片段查看图像 你可以尝试一下 意图intent new Inten
  • Google API 返回的 Google+ 个人资料图片网址是否会发生变化?

    因此 我使用 Google API 通过用户的 user id 来获取人们的个人资料图片 Google API 返回如下 JSON image url https lh5 googleusercontent com OGjgCn9fCPk
  • 解析 Google 表格中制表符分隔的文本文件

    我在网上有一个 txt 文件 其中包含制表符分隔值 TSV CSV 如下所示 产品IDtabColortabPricetabQuantity项目1tabRed tab 5 2 tab5项目2tabBlue tab 7 5 tab10 我使用
  • Java中如何保存DOM文档?

    我在用DOM解析器和XPATH解析我的XML文件 我改变了一个节点的值Document Object 然而当我打开我的XML文件 它没有向我显示任何反射 我的DOM解析器代码如下 private void setPortNumber int
  • 自动从外部数据库加载 Google 电子表格数据

    我有一个共享的 Google 电子表格 工作表的某些列必须填充数据库服务器 PostgreSQL 中存在的数据 SQL 查询 此外 数据加载必须安排为自动完成 例如每天 1 点 最后 我需要在电子表格中进行一些调整 例如 加载后将日期时间放
  • 如何修复 OnChange 脚本,该脚本运行良好,但在修改 Google 表格后停止运行

    概述 工作簿根据每条记录的类别分数计算每条记录 或行 的总体分数 类别分数是通过对每个记录的数百个数据点执行的计算得出的 根据我在网上找到的几个示例和教程 我编译了代码以发送名为 checkComplete 的 onChange 电子邮件
  • 无需画布,用纯 JS 生成图像

    如何在没有画布的情况下用纯 JavaScript 无外部库 从像素数组生成 绘制图片 我尝试以URI形式生成图像但没有成功 图片格式不容易快速理解和实现 BMP 数据URI 您可以使用以下函数生成 BMP 位图 dataURI 24 位的
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 为什么我的图像下方有空间? [复制]

    这个问题在这里已经有答案了 图像在下面获得了神秘的空白空间 即使padding 0 margin 0被应用 示范 http jsfiddle net cLETP 红色边框应该包围图像 但底部有空间 造成这种情况的原因是什么 如何删除该空间
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • 当我使用 Image.FromFile() 时 FileNotFound

    我在这种情况下使用 Image FromFile string 方法 using System using System Collections Generic using System ComponentModel using Syste
  • 如何使用 XPath 正则表达式匹配 URL

    需要 XPath 方面的帮助 我有这样一个XML

随机推荐