Xidel 从 HTML 标签属性中获取 json

Xidel get json from HTML tag attribute

我正在尝试从 div 中提取图像 URL,其中文件的 link 在数据设置属性中存储为 json 对象:

<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

可以,但不行。

不行,当“https://example.com”本身returns一个JSON.
时,你只能使用全局默认变量$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)"