2

我正在尝试从 div 中提取图像 URL,其中文件的链接作为 json 对象存储在 data-settings 属性中:

<div class="c-offerBox_galleryItem">
    <div data-component="magnifier" data-component-on="@load" data-settings="{
                image: '/media/cache/gallery/rc/p2vgiqwd/images/42/42542/KRHE7Z29X19.jpg',
                ratio: 1.5,
                outside: 0
            }"></div>
</div>

目前我可以通过以下方式访问数据设置:

xidel "https://example.com" -e "//div[@class='c-offerBox_galleryItem']/div/@data-setting

输出是 json 对象。如何访问图像对象?

我想是这样的:

xidel "https://example.com" -e "//div[@class='c-offerBox_galleryItem']/div/@data-setting/$json/image

会工作,但不是。

4

1 回答 1

2

不,您只能$json在“https://example.com”本身返回 JSON 时使用全局默认变量。
要将字符串解析为 JSON,请使用parse-json(). 在这种情况下,您还需要“自由”选项。

xidel -s "https://example.com" -e "//div[@class='c-offerBox_galleryItem']/div/parse-json(@data-settings,{'liberal':true()})"

对于 Xidel 0.9.8 使用json()(不推荐用于较新的版本)。

xidel -s "https://example.com" -e "//div[@class='c-offerBox_galleryItem']/div/json(@data-settings)"
于 2021-11-30T23:05:13.653 回答