см обновление в конце intail проводки
- хорошо я немного confued я должен признать ... ;-) будучи послушником Perl-друг, Perl-код Allway выглядит немного abracadaba ....
мне нужно иметь некоторые эскизы из сайтов, но я пытался использовать Wget - но это не работает для меня, так как мне нужны некоторые функции рендеринга, что нужно: у меня есть список из 2500 URL-адресов, по одному на каждую строку, сохраненный в файле. Затем я хочу сценарий - см. Его ниже - открыть файл, прочитать строку, затем загрузить веб-сайт и сохранить изображение в виде небольшого эскиза. так как у меня есть куча веб-сайтов (2500), я должен принять решение об именовании результатов.
http://www.unifr.ch/sfm
http://www.zug.phz.ch
http://www.schwyz.phz.ch
http://www.luzern.phz.ch
http://www.schwyz.phz.ch
http://www.phvs.ch
http://www.phtg.ch
http://www.phsg.ch
http://www.phsh.ch
http://www.phr.ch
http://www.hepfr.ch/
http://www.phbern.ch
До сих пор так хорошо, хорошо я думаю, я попробовать что-то вроде этого
#!/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, '>', "/images/$name");
binmode $out;
print $out $png;
close $out;
sleep 5;
}
я получить следующие результаты в настоящее время .... посмотреть, что выходит ... и насколько как я вижу - в папке нет изображений, хранящихся в папке «images»
почему бы и нет !?
[email protected]:~> cd perl
[email protected]:~/perl> perl test_8.pl
http://www.unifr.ch/sfm
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 2.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 2.
http://www.zug.phz.ch
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 3.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 3.
http://www.schwyz.phz.ch
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 4.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 4.
http://www.luzern.phz.ch
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 5.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 5.
http://www.schwyz.phz.ch
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 6.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 6.
http://www.phvs.ch
binmode() on closed filehandle $out at test_8.pl line 25, <$urls> line 14.
print() on closed filehandle $out at test_8.pl line 26, <$urls> line 14. http://www.pfh-gr.ch Got status code 500 at test_8.pl line 15 [email protected]:~/perl>
что делает вывод хочет сказать мне ... , что я могу сделать сейчас !?
обновление
привет мой дорогой
ТНХ для ответа - думаю, что у меня есть разрешение вопроса здесь ....
ну я это ...
#!/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, '>', "/images $name")or die $!;
binmode $out;
print $out $png;
close $out;
sleep 5;
}
хорошо это работает - но все, что я могу получить, это хранить в каталоге, где находится test_8.pl
Угадайте, что это вопрос с разрешением.
что я могу сделать.
Могу ли я разместить каталог изображений где-нибудь за пределами папки perl ..? Возможно, я создал либо
perl-каталог, либо images-directory с некоторыми специальными правами root.
, что я сделал, чтобы решить проблемы, до сих пор был
a- checkint разрешения на папки - Perl . perl/images
b.- запуск сценария в командной строке как пользователь root.
хорошо все, что я могу получить, это результаты, которые хранятся в папке, ...
linux-wyee:/home/martin/perl_dev/perl # ls
.directory images module_test pfh-gr.ch.png phsg.ch.png phtg.ch.png schwyz.phz.ch.png test_4.pl test_8.pl urls.txt
heilpaedagogik.phbern.ch.png luzern.phz.ch.png module_test.pl phbern.ch.png phsh.ch.png phvs.ch.png test_2.pl test_6.pl test_8.pl~ zug.phz.ch.png
hepfr.ch.png ma-shp.luzern.phz.ch.png open-local-file.pl phr.ch.png ph-solothurn.ch.png .png test_3.pl test_7.pl unifr.chsfm.png
linux-wyee:/home/martin/perl_dev/perl #
папка изображение пуста
что я могу сделать
sould я создать папку а изображения вне жемчужно-каталога
как назвать строковый путь к нему .. ?!
дорогой приятель - мы все в порядке - я уверен, я думаю, что это только вопрос разрешения. Но как его решить !?
Возможно, мне нужно снова создать все тестовые файлы в совершенно новом каталоге. не как root, а как обычный пользователь !? Что ты говоришь!?
В заявлении 'open (my $ out, '>',"/images/$ name ")' появляется ошибка при добавлении 'или die $!' Для устранения неполадок. – Melioratus
Возможный дубликат [perl-mechanize работает с ограничениями - несколько попыток отладки начались] (http://stackoverflow.com/questions/9656892/perl-mechanize-runs-into-limitations-several-debugging-attempts-started) –
привет .- см. обновление при первоначальной публикации - предположите, что вы правы. – zero