尝试使用in in perl来获取网页的来源

时间:2011-12-01 08:18:56

标签: perl get webpage

我正在尝试在我的perl代码中获取网页的来源,基本上这个网站是本地服务器,链接是http://gold.star.com/isos/preFCS5.4/LASTESTDMS/我能够ping服务器,但我的代码中的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; 

每次运行此代码时,我都会收到消息“Can not”,但是当我尝试使用浏览器打开时,相同的链接,但在代码中它无法正常工作。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

目标站点可以检查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();