我正在尝试使用LWP :: UserAgent来收集网页的内容但由于某些原因,当我运行脚本时,我得到一个Windows弹出窗口,说“Perl命令行解释器已经停止工作”。我无法弄清楚为什么我将代码简化为以下的基本要素:
#!C:/Perl/bin/Perl.exe
use LWP::UserAgent;
$URL = 'http://www.google.com';
my $oHTTPAgent = new LWP::UserAgent;
$oRequest = HTTP::Request->new('GET');
$oRequest->url($URL);
$sResponse = $oHTTPAgent->request($oRequest);
if ($sResponse->is_success) {
$sPage = $sResponse->content;
}
print $sPage;
有什么想法吗?
谢谢,
阿伦
答案 0 :(得分:2)
你正在点击google.com,它不允许机器人。我不知道这是不是你的问题,但如果你的回复不成功,你就没有另一个分支。在Perl程序结束时,程序将关闭而不打印任何内容。
use LWP::UserAgent;
$url = 'http://www.perl.com';
my $ua = LWP::UserAgent->new;
my $response = $ua->get( $url );
print $response->content if $response->is_success;
print "I'm done!\n";
您可能也对Mojo::UserAgent感兴趣:
use Mojo::UserAgent;
$url = 'http://www.perl.com';
my $ua = Mojo::UserAgent->new;
print $ua->get( $url )->res->body;
print "I'm done!\n";
答案 1 :(得分:1)
脚本编写时很少考虑以下事项:
-> use strict;
-> use warnings;
路径C:/Perl/bin/Perl.exe
是否存在?
shebang {#}应该指向安装perl的路径。
代码中使用的变量很少被声明,修改后的代码看起来像
use strict;
use warnings;
use LWP::UserAgent;
my $URL = 'http://www.google.com';
my $oHTTPAgent = new LWP::UserAgent;
my $oRequest = HTTP::Request->new('GET');
$oRequest->url($URL);
my $sResponse = $oHTTPAgent->request($oRequest);
if ($sResponse->is_success) {
my $sPage = $sResponse->content;
print $sPage;
}