gpt4 book ai didi

perl - 使用 curl 解析 XML,获取图像的 URL 并下载它

转载 作者:行者123 更新时间:2023-12-02 00:39:05 28 4
gpt4 key购买 nike

我想编写一个 shell 脚本来从 rss 提要中获取图像。现在我有:

curl http://foo.com/rss.xml | grep -E '<img src="http://www.foo.com/full/' | head -1 | sed -e 's/<img src="//' -e 's/" alt=""//' -e 's/width="400"//' -e 's/  height="400" \/>//' | sed 's/ //g'

我用它来抓取文件中第一次出现的图像 URL。现在我想把这个 URL 放在一个变量中,以便再次使用 cURL 来下载图像。任何帮助表示赞赏! (此外,您还可以就如何更好地从带有 URL 的行中删除所有内容提供提示。这是行:

 <img src="http://www.nichtlustig.de/comics/full/100802.jpg" alt="" width="400" height="400" />

可能有一些比我的解决方案更好的正则表达式来删除除 URL 之外的所有内容。)提前致谢!

最佳答案

使用正则表达式解析 HTML/XML 是一个 Bad Idea in general .因此,我建议您使用合适的解析器。

如果您不反对使用 Perl,让 Perl 使用适当的解析器库为您做正确的 XML 或 HTML 解析:

HTML

curl http://BOGUS.com |& perl -e '{use HTML::TokeParser; 
$parser = HTML::TokeParser->new(\*STDIN);
$img = $parser->get_tag('img') ;
print "$img->[1]->{src}\n";
}'

/content02/groups/intranetcommon/documents/image/blk_logo.gif

XML

curl http://BOGUS.com/whdata0.xml | perl -e '{use XML::Twig;
$twig=XML::Twig->new(twig_handlers =>{img => sub {
print $_[1]->att("src")."\n"; exit 0;}});
open(my $fh, "-");
$twig->parse($fh);
}'

/content02/groups/intranetcommon/documents/image/blk_logo.gif

关于perl - 使用 curl 解析 XML,获取图像的 URL 并下载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3391362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com