Попытка получить источник веб-страницы с помощью get in perl - PullRequest
0 голосов
/ 01 декабря 2011

Я пытаюсь получить источник веб-страницы в моем Perl-коде, в основном этот веб-сайт является локальным сервером, и ссылка http://gold.star.com/isos/preFCS5.4/LASTESTDMS/ Я могу пропинговать сервер, но команда get в моемкод, похоже, не получает исходный код страницы, вот код, который я пытаюсь использовать

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
my $page = get($dmsurl) or die "cannot\n";
print $page; 

Каждый раз, когда я запускаю этот код, я получаю сообщение «Cannot», но при попытке получить ту же ссылкус моим браузером в открывается, но в коде его не работает.

Ответы [ 2 ]

5 голосов
/ 01 декабря 2011

Возможно, ваш сайт блокирует ваш скрипт, потому что считает его ботом. Вы хотите узнать это, посмотрев на код состояния, который LWP получает с вашего сайта. К сожалению, вы не можете сделать это с get. Вы можете с getprint и getstore.

use LWP::Simple;
my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
my $rc = getprint($dmsurl);
print status_message($rc);

getprint будет отображать код состояния в случае сбоя, поэтому печать сообщения о состоянии немного избыточна. Подробнее о $rc см. HTTP :: Status .

3 голосов
/ 01 декабря 2011

Целевой сайт может проверить поле User-Agent и ответить, например, с ошибкой 404 HTTP.

Я рекомендую вам установить User-Agent (используя WWW :: Mechanize):

#!/usr/bin/perl

use strict;
use warnings;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->agent("Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18" );
my $dmsurl = 'http://gold.star.com/isos/preFCS5.4/LATESTDMS/'; 
$mech->get($dmsurl);
print $mech->content(); 
...