gpt4 book ai didi

regex - 无法通过 WWW::Mechanize 跟踪图像链接

转载 作者:行者123 更新时间:2023-12-01 02:30:36 24 4
gpt4 key购买 nike

我正在编写 Perl 脚本以获取“当天的天文图像”并将其设置为我的墙纸。然后我会设置一个 cronjob 每天为我做这件事。但是我很难让脚本遵循通向全尺寸图像的图像链接,然后才下载它。
我正在尝试类似下面的代码(请记住,我只是一个对 Perl regex 不太了解的 Perl 初学者):

#!/usr/bin/perl -w
use strict;
use warnings;
use WWW::Mechanize;

my $url = "http://apod.nasa.gov/apod/astropix.html";

my $mech = WWW::Mechanize->new();
$mech->get($url);
#debugging
if ($mech->follow_link(url_regex=>qr/\.(?:jpg|png)$/)){
print "Following the image link...";
}else{
print "Couldn't find the link...";
}

my @img = $mech->find_image(alt_regex => qr/image/i);

foreach my $img(@img){
$mech->get($img->url, ':content_file'=>'astro.jpg');
}

print "\n";

exit(0);

任何帮助将非常感激!

最佳答案

你的脚本几乎是正确的。 NASA页面的结构是:

<html>
<body>
...
<a href="http://.../blah.jpg"><img src="http://.../blah-lowres.jpg"></a>
...
</body>
</html>

所以,如果 $mech->follow_link成功您已经在 $mech->content 中拥有图像数据.

尝试这个:
$mech->get($url) or die "unable to get $url";
$mech->follow_link(url_regex => qr/\.(jpg|png)\z/) or die "unable to follow image link";
open(my $fh, ">astro.jpg");
print {$fh} $mech->content;
close($fh);
print "saved image as astro.jpg\n";

关于regex - 无法通过 WWW::Mechanize 跟踪图像链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223309/

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