2012-03-31 6 views
-1

см обновление в конце 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, а как обычный пользователь !? Что ты говоришь!?

+2

В заявлении 'open (my $ out, '>',"/images/$ name ")' появляется ошибка при добавлении 'или die $!' Для устранения неполадок. – Melioratus

+0

Возможный дубликат [perl-mechanize работает с ограничениями - несколько попыток отладки начались] (http://stackoverflow.com/questions/9656892/perl-mechanize-runs-into-limitations-several-debugging-attempts-started) –

+0

привет .- см. обновление при первоначальной публикации - предположите, что вы правы. – zero

ответ

5

Вам не удалось открыть файл для записи. Ваш путь /images, и у вас, вероятно, нет прав на этот каталог (если он существует). Всегда проверяйте возвращаемое значение ваших звонков на open, как и в первом open.

Если бы я был вами, я бы не использовал /images. Я бы загрузил все в управляемый мной каталог и не загромождал стандартные макеты каталогов. Вы почти никогда не должны создавать новые каталоги под /, если вы не выполняете администрирование системы.

+0

привет, уважаемый брайан д фой мана, спасибо, хорошо, я прав - я проверю разрешения - и я надеюсь, что потом все будет хорошо. thx снова за все, что вы сделали. много много приветствий - – zero

+0

** обновление ** хорошо я изменил разрешения и попробовал еще раз - он все равно не работает ... Примечание: была версия скрипта - файлы, написанные в дополнительной папке - это хорошо работает. ** почему? ** – zero

+0

привет, зелёный привет всем - см. обновление при начальном размещении ... я думаю, что вы правы – zero

Смежные вопросы