2011-12-01 18 views
0

我想在我的Perl代碼中獲取網頁的來源,基本上這個網站是本地服務器和鏈接是http://gold.star.com/isos/preFCS5.4/LASTESTDMS/我能ping通服務器,但在我的代碼get命令似乎並沒有越來越這裏的網頁源代碼,我用試圖獲得一個網頁的來源使用得到在perl

#!/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; 

每次運行此代碼我得到的消息試圖「不能」,但相同當我嘗試打開我的瀏覽器時鏈接,但在代碼中不工作。

+0

你得到頁面'curl'或'wget'?我的意思是,你的代碼適用於我的其他網址。 –

+0

是的..它可以很好地與其他一些網址,但不是與這一個,上述鏈接也適用於Web瀏覽器。而gold.star.com是我們網絡中的內部服務器。 – mac

+2

服務器錯誤和訪問日誌告訴您訪問權限是什麼? –

回答

3

靶位點可以檢查用戶代理字段和響應與例如404 HTTP錯誤。

我會建議你(使用WWW ::機械化)設置的User-Agent:

#!/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(); 
5

這是可能的,因爲它認爲它的一個機器人您的網站阻止腳本。您想通過查看LWP從您的網站獲取的狀態代碼來找出答案。不幸的是,你不能這樣做,get。你可以用getprintgetstore。如果失敗

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