XML:不可捕获的属性
xidel 'https://en.wikipedia.org/wiki/List_of_trigonometric_identities' -e '/html/body/div[3]/div/div[3]/main/div[3]/div[3]/div[2]/table[1]/tbody/tr[2]/td/span/a/img' --output-format=xml
输出
<?xml version="1.0" encoding="UTF-8"?>
<img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/250px-Trig_Functions.svg.png" decoding="async" width="250" height="250" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/500px-Trig_Functions.svg.png 2x" data-file-width="419" data-file-height="419"/>
, 但随后
xidel 'https://en.wikipedia.org/wiki/List_of_trigonometric_identities' -e '/html/body/div[3]/div/div[3]/main/div[3]/div[3]/div[2]/table[1]/tbody/tr[2]/td/span/a/img' --output-format=xml | xidel -e '*[@src]'
导致输出为空。
为什么会这样?
解决方案
简短回答
与其使用 -e '*[@src]',不如使用 -e 'img/@src',或 -e '//@src'。
详细解答
我建议你美化HTML源代码,将其保存在本地,并对它进行彻底检查,以便创建你自己的带有唯一标识符的查询:
$ xidel -s "https://en.wikipedia.org/wiki/List_of_trigonometric_identities" -e . \
--output-node-format=html --output-node-indent > List_of_trigonometric_identities.htm
$ xidel -s "List_of_trigonometric_identities.htm" \
-e '//td[@class="sidebar-image"]/span/a/img/@src'
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/250px-Trig_Functions.svg.png
你可能也注意到,在同一个 元素节点中,还有该图像的500像素版本:
$ xidel -s "List_of_trigonometric_identities.htm" \
-e '//td[@class="sidebar-image"]/span/a/img/@srcset'
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/500px-Trig_Functions.svg.png 2x
$ xidel -s "List_of_trigonometric_identities.htm" \
-e '//td[@class="sidebar-image"]/span/a/img/tokenize(@srcset)[1]'
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/500px-Trig_Functions.svg.png
如果你想要最高分辨率的PNG图像,或原始的SVG文件,你可以通过对图片链接进行“点击”来进一步查看 "/wiki/File:Trig_Functions.svg":
$ xidel -s "List_of_trigonometric_identities.htm" \
-e '//td[@class="sidebar-image"]/span/a/@href'
/wiki/File:Trig_Functions.svg
$ xidel -s "https://en.wikipedia.org/wiki/List_of_trigonometric_identities" \
-f '//td[@class="sidebar-image"]/span/a/@href' -e . \
--output-node-format=html --output-node-indent > Trig_Functions.svg.htm
$ xidel -s "Trig_Functions.svg.htm" -e '//div[@class="fullImageLink"]/a/@href'
//upload.wikimedia.org/wikipedia/commons/4/48/Trig_Functions.svg
$ xidel -s "Trig_Functions.svg.htm" -e '//div[@class="fullImageLink"]/div/span/a/@href'
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/250px-Trig_Functions.svg.png
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/500px-Trig_Functions.svg.png
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/960px-Trig_Functions.svg.png
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/1280px-Trig_Functions.svg.png
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/3840px-Trig_Functions.svg.png
$ xidel -s "Trig_Functions.svg.htm" \
-e '//div[@class="fullImageLink"]/div/span/a[last()]/@href'
//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/3840px-Trig_Functions.svg.png
最后要实际下载该图像(保存到当前目录):
$ xidel "https://en.wikipedia.org/wiki/List_of_trigonometric_identities" \
-f '//td[@class="sidebar-image"]/span/a/@href' \
-f '//div[@class="fullImageLink"]/div/span/a[last()]/@href' \
--download .
Retrieving (GET): https://en.wikipedia.org/wiki/List_of_trigonometric_identities
Processing: https://en.wikipedia.org/wiki/List_of_trigonometric_identities
Retrieving (): https://en.wikipedia.org/wiki/File:Trig_Functions.svg
Processing: https://en.wikipedia.org/wiki/File:Trig_Functions.svg
Retrieving (): https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Trig_Functions.svg/3840px-Trig_Functions.svg.png
Save as: ./Trig_Functions.svg.png
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。