google-sheets-importxml - 使用 IMPORTXML 时,为什么我可以得到 IMG ALT 而不是 IMG SRC?
问题描述
我正在尝试使用 Google 表格作为刮板来从特定商店获取产品描述价格和图像。https://www.aliexpress.com/store/group/xiaomi-Aqara-Smart-home/2389096_516541380.html
我正在尝试从此页面检索图像 URL,但最后,我无法使其正常工作。
<div class="pic">
<a class="pic-rind" href="//www.aliexpress.com/item/4000465413353.html?spm=2114.12010612.8148356.1.185c37e4M653t1" data-spm-anchor-id="2114.12010612.8148356.1">
<img class="picCore lazy-load" alt="Aqara Opple Zigbee Smart Switch Light Switch Smart App Control Wireless Wall Switch Work With Mijia App Apple Homekit" src="//ae01.alicdn.com/kf/Hc5db6afe8de841f9a6ef4673dfb957c5W/Aqara-Opple-Zigbee-Smart-Switch-Light-Switch-Smart-App-Control-Wireless-Wall-Switch-Work-With-Mijia.jpg_200x200.jpg"
style="visibility: visible;" data-spm-anchor-id="2114.12010612.8148356.i0.185c37e4M653t1"></a>
</div>
使用//img[@class='picCore lazy-load']/@alt
有效并正确返回Alt 文本。
但是,当我更改@alt
为@src
, (我真正想要的信息)时,它会返回#N/A
(错误- 导入的内容为空)。
我的理解是我应该看到//ae01.alicdn.......jpg
(实际的图像源)。Xpath 我缺少什么吗?
提前感谢您的帮助!
编辑:如果我使用@*
,我实际上可以在src
之后看到预期的结果alt
,但它会被扔到下面的行中,我认为这就是破坏性的原因。不知道如何将它包含在一行或其他东西中。
解决方案
该页面是使用 javascript 动态加载的,您问题中的示例 html 就是由此产生的结果。如果没有一些技巧(您可以搜索脚本来处理动态加载的页面),GS 无法检索该数据。
幸运的是,并非所有数据都是这样加载的。如果您在该页面上禁用 JS,您将获得大部分相同的数据,包括<img>
信息;只有这一次 - 它看起来像这样:
<img class="picCore lazy-load" image-src="//ae01.alicdn.com/kf/Hc5db6afe8de841f9a6ef4673dfb957c5W
/Aqara-Opple-Zigbee-Smart-Switch-Light-Switch-Smart-App-Control-Wireless-Wall-Switch-Work-With-Mijia.jpg_200x200.jpg" alt="Aqara Opple Zigbee Smart Switch Light Switch Smart App Control Wireless Wall Switch
Work With Mijia App Apple Homekit">
所以你必须使用的 xpath 表达式是:
//img[@class='picCore lazy-load']/@image-src
那将输出
//ae01.alicdn.com/kf/Ha01fb531f16546368249b1efab8767341/Original-Aqara-Wireless-Flood-Water-Immersing-Smart-Sensor-IP67-Waterproof-Smart-Remote-Control-For-Mijia-Mi.jpg_200x200.jpg
//ae01.alicdn.com/kf/Hc5db6afe8de841f9a6ef4673dfb957c5W/Aqara-Opple-Zigbee-Smart-Switch-Light-Switch-Smart-App-Control-Wireless-Wall-Switch-Work-With-Mijia.jpg_200x200.jpg
//ae01.alicdn.com/kf/H91d4b49011494602be752b446c45b530e/Aqara-Wall-Switch-D1-ZigBee-Smart-Zero-Line-Fire-Wire-Light-Remote-Control-Wireless-Key-Wall.jpg_200x200.jpg
//ae01.alicdn.com/kf/H5078881ea11a443182bd3d3989ddf2a2r/Aqara-P3-Air-Conditioning-Companion-ZigBee-3-0-With-Temperature-Humidity-Sensor-Smart-Remote-Control-For.jpg_200x200.jpg
等等
推荐阅读
- javascript - 在同一终端上运行的 VScode 实时共享
- vue.js - 如何在任何纵横比下实现相同的外观/设计?
- asp.net-core-3.1 - 模型的 Entity Framework Core 搜索字符串
- android - 在 Espresso 测试中使用 Firebase ScreenShotter 时如何更好地控制屏幕截图名称?
- python - 列表重复N次python的组合
- python - 如何使用 utf-8 解码字符串?
- arrays - 如何将 2 个矩阵与 1d 数组表示相乘?
- storage - 错误:在 TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27) 读取 ECONNRESET 上传文件以存储 i S3
- python - 为什么我不能从电子商务网站上抓取所有数据?
- thingsboard - Thingsboard 中的 getEntityAttributes() 函数