我需要使用电报模板代码将"data original"属性替换为"src"。
我正在运行一个电报即时视图模板错误。
Image source not found: src attribute expected in <img data-plugin-lazyload="" data-plugin-options="{'effect' : 'fadeIn'}" data-original="https://site.com.br/thumbs/chamadas/xbox.jpg" alt="PS5 e Xbox Series X podem atrasar por causa do Coronavírus, estima analista" title="PS5 e Xbox Series X podem atrasar por causa do Coronavírus, estima analista"/>
原始站点在所有图像中使用一个属性"dataoriginal"来代替"src"属性,因为懒惰加载脚本。我试图从标记中提取原始数据,并用原始数据值替换为src属性。
我想我可以使用获得img节点
//section[has-class("section")]//img
如果我使用,我可以获得数据原始节点
//section[has-class("section")]//img/@data-original
调试结果:
-------
Debug 6 nodes:
[0]: data-original="https://site.com.br/thumbs/chamadas/xbox.jpg"
[1]: data-original="https://site.com.br/uploads/2020/03/15/63185/consoles-next-gen-aberta.jpg"
[2]: data-original="https://site.com.br/thumbs/chamadas/B550chamada.jpg"
[3]: data-original="https://site.com.br/thumbs/chamadas/nvidia-rtx-ampere-chamada.jpg"
[4]: data-original="https://site.com.br/thumbs/chamadas/amd-zen-3-zen-4-roadmap-0.jpg"
[5]: data-original="https://site.com.br/thumbs/chamadas/xbox-srs-x-chamada1.jpg"
我尝试了很多组合都没有成功,比如:
@replace("data-original", "src"): $body//img/@data-original
最接近的尝试是:
@replace("data-original", "src"): //section[has-class("section")][.//img]
但在最后一段代码中,它删除了所有img标记,所有文本都放在一行<p>
中,因此所有文章只有一个段落行,包含所有内容,没有图像。
理论上"简单"(不简单(将"dataoriginal"属性替换为"src"将完成模板工作。
参考资料可能会有所帮助:
#1即时视图参考
#2即时视图参考
#3即时查看文档
#4介质即时视图模板
考虑使用以下代码来解决问题:
@set_attr(src, @data-original): //div[has-class("section")]//img
如果你的img
中有srcset
属性,你也可以使用下面的代码,电报将自动使用高分辨率图像:
# Use Instant View version 2.1
~version: "2.1"
# Disable Lazyload
@set_attrs(src, @data-original, srcset, @data-srcset): //div[has-class("entry-content")]//img
我使用了以下snnipet:
# first of all, site use an attribute object to renderize lazy loaded images. Let convert them to img src attrbute so we cna ride of src not set error
<abc>: //div[has-class("news__text")]//img # Find all images in content div class and convert it to <abc>
@set_attr(src, ./@data-original) # Set src attribute from data-original
$imagetag # var to current <abc>
<img>: //div[has-class("news__text")]//abc # Find abc and convert it to <img> again with seted src
全部基于@haacki47的回复:https://stackoverflow.com/questions/54786100/extract-create-and-append-using-xpath-and-telegram-instant-view