2016-08-08 4 views
0

Я хочу получить исходный код этого сайта: https://www.splithistory.com/zsl/ , но он дает ошибку, я попробовал его по WWW :: Mechanize и по LWP :: Простой, но у меня возникла ошибка: Ошибка GETing website Not Found at J: \ perl_project \ demo_spli.pl линия 9. , но когда я пытаюсь получить данные с этого сайта: https://www.splithistory.com/aapl/ работает нормально .....Почему я не могу получить исходный код с веб-сайта в perl?

вот мой код

#!/usr/bin/perl 
#!perl -w 
use DBI; 
use strict; 
use WWW::Mechanize; 
my $mech= WWW::Mechanize->new(); 
my $url= 'https://www.splithistory.com/zsl/'; 
$mech -> get($url); 
my $script = $mech -> content; 
open (MYFILE, '>sd.txt'); #open file in write mode 
print MYFILE $script;  #copy source code of website in file 
close(MYFILE); 

выход:

Error GETing https://www.splithistory.com/zsl/: Not Found at J:\perl_project\demo_spli.pl line 9. 
+0

Вы говорите об источнике страницы, а не в исходном коде, правильно? – mob

ответ

2

Error GETing https://www.splithistory.com/zsl/: Not Found at J:\perl_project\demo_spli.pl line 9.

Это потому, что сайт возвращает "404 Not Found" внутри заголовка HTTP. Успешный ответ будет иметь код состояния 200:

HTTP/1.1 404 Not Found 
Date: Mon, 08 Aug 2016 18:50:46 GMT 
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/1.0.2h mod_jk/1.2.40 mod_perl/2.0.9 Perl/v5.8.9 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=ISO-8859-1

WWW :: Mechanize будет каркать, если веб-сайт возвращает ошибку, и это то, что вы видите. Для получения данных в любом случае используйте:

eval { $mech->get($url); }; 
my $res = $mech->res(); 
$script = $res->content;