友
我有一个很好的脚本,可用作图像处理程序。对于第一次试验和测试一切顺利。
以下是我在urls.txt中使用的URL列表,我正在对脚本运行。 注意这只是一个简短的列表。我需要针对2500个URL进行运行,因此如果脚本更健壮并且如果某些URL不可用或者花费太多时间来继续运行,那么它将会很棒。我认为如果某些URL不可用或占用太多时间或阻塞,脚本会遇到一些问题 mozrepl和WWW:Mechanize::Firefox花费了太多时间。
您认为我的想法和建议可能是问题的原因吗?如果是这样,我们如何改进脚本并使其更强大,更强大,健壮,以便它不会太快停止。
喜欢听到你的声音。
问候。
http://www.bez-zofingen.ch
http://www.schulesins.ch
http://www.schulen-turgi.ch/pages/bezirksschule/startseite.php
http://www.schinznach-dorf.ch
http://www.schule-seengen.ch
http://www.gilgenberg.ch/schule/bez/2005-06/
http://www.rheinfelden-schulen.ch/bezirksschule/
http://www.bezmuri.ch
http://www.moehlin.ch/schulen/
http://www.schule-mewo.ch
http://www.bez-frick.ch
http://www.bezendingen.ch
http://www.bezbrugg.ch
http://www.schule-bremgarten.ch/content/view/20/37/
http://www.bez-balsthal.ch
http://www.schule-baden.ch
http://bezaarau.educanet2.ch/info/.ws_gen/index.htm
http://www.benedict-basel.ch
http://www.institut-beatenberg.ch/
http://www.schulewilchingen.ch
http://www.ksuo.ch
http://www.international-school.ch
http://www.vsgtaegerwilen.ch/
http://www.vgk.ch/
http://www.vstb.ch
但我想如果它比现在更强大,我将非常高兴。
当然,与WWW :: Mechanize :: Firefox
一样,它正在推动真正的浏览器所以它可能有点不稳定,可能比任何其他屏幕抓取解决方案都要多。我收到一些错误,如下所示......(见下文)
注意我还仔细查看了Firefox Troubleshooting处的调试页面 有关各种错误,麻烦和类似的事情的提示和技巧和解决方法。
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize::Firefox;
my $mech = new WWW::Mechanize::Firefox();
open my $URLs, '<', 'URLs.txt' or die $!;
while (<$URLs>) {
chomp;
next unless /^http/I;
print "$_\n";
$mech->get($_);
my $png = $mech->content_as_png;
my $name = $_;
$name =~ s#^http://##I;
$name =~ s#/##g;
$name =~ s/\s+\z//;
$name =~ s/\A\s+//;
$name =~ s/^www\.//;
$name .= ".png";
open(my $out, '>', "/home/martin/images/$name") or die $!;
binmode $out;
print $out $png;
close $out;
sleep 5;
}
查看结果以及停止的错误。
martin@linux-wyee:~/perl> perl test_10.pl
http://www.bez-zofingen.ch
Datei oder Verzeichnis nicht gefunden at test_10.pl line 24, <$URLs> line 3.
martin@linux-wyee:~/perl> perl test_10.pl
http://www.bez-zofingen.ch
http://www.schulesins.ch
http://www.schulen-turgi.ch/pages/bezirksschule/startseite.php
http://www.schinznach-dorf.ch
http://www.schule-seengen.ch
http://www.gilgenberg.ch/schule/bez/2005-06/
http://www.rheinfelden-schulen.ch/bezirksschule/
Not Found at test_10.pl line 15
martin@linux-wyee:~/perl>
你有什么建议?我们怎样才能使脚本更健壮?如何获得它以便它不会这么早停止?
答案 0 :(得分:3)
包裹exception handler中可能出错的所有方法/系统调用。 (有关该主题的讨论,请参阅Perl Best Practices的第13章。)为Mozrepl设置显式超时。
当您收到错误时,请记录它,然后跳到下一个URL。运行完成后,检查日志文件并使用之前无法处理的URL重复运行。对永久关闭的网页的网址进行排序。最后,由于某些原因,可能会留下一些无法通过Mozrepl截屏的页面。手动处理。
答案 1 :(得分:0)
您应该始终检查您的回复是否成功。您更正后的代码:
use strict;
use warnings;
use WWW::Mechanize::Firefox;
my $mech = new WWW::Mechanize::Firefox();
open my $URLs, '<', 'URLs.txt' or die $!;
while (<$URLs>) {
chomp;
next unless /^http/I;
print "$_\n";
my $res = $mech->get($_);
if(!$res->is_success()){
next; # or continue;
}
my $png = $mech->content_as_png;
my $name = $_;
$name =~ s#^http://##I;
$name =~ s#/##g;
$name =~ s/\s+\z//;
$name =~ s/\A\s+//;
$name =~ s/^www\.//;
$name .= ".png";
open(my $out, '>', "/home/martin/images/$name") or die $!;
binmode $out;
print $out $png;
close $out;
sleep 5;
}
`