Perl 使用LWP获取网页内容
我正试图使用LWP::UserAgent收集网页内容,但由于某些原因,当我运行脚本时,会出现一个Windows弹出窗口,上面显示: Perl命令行解释器已停止工作 我不明白为什么,因为我已将代码简化为以下基本内容:Perl 使用LWP获取网页内容,perl,lwp,Perl,Lwp,我正试图使用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-&g
#!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;
可能有什么问题?编写脚本时需要考虑的一些常见问题:
- 增加
使用严格代码>
- 添加
使用警告代码>
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;
}
编写脚本时需要考虑的几个常见问题:
- 增加
使用严格代码>
- 添加
使用警告代码>
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;
}
你正在访问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";
您可能还对以下方面感兴趣:
你正在访问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";
您可能还对以下方面感兴趣:
这看起来应该是可行的,这不是代码问题,您是否尝试过直接在脚本上运行perl?谢谢您的回复。直接在脚本上运行perl是什么意思?我从命令行运行这个脚本。最初,此代码块来自组成web表单的较大代码块。我的意思是尝试运行C:\Perl\bin\Perl.exe C:\path\to\script.plPerl二进制文件是否运行其他脚本?看起来应该可以,这不是代码问题,您是否尝试过在脚本上直接运行Perl?谢谢您的回复。直接在脚本上运行perl是什么意思?我从命令行运行这个脚本。最初,此代码块来自组成web表单的较大代码块。我的意思是尝试运行C:\Perl\bin\Perl.exe C:\path\to\script.plPerl二进制文件是否运行其他脚本?我已逐字尝试此代码,但仍会出现相同的错误。我相信这不是语法或逻辑错误,而是与windows有关。我用不同的网页尝试了上面的代码,但没有用。也许这与我的安装有关。请注意,我在这台计算机上运行了大量其他Perl脚本(不使用LWP),并且没有出现任何问题。奇怪。我已经逐字逐句地尝试了这个代码,仍然给出了相同的错误。我相信这不是语法或逻辑错误,而是与windows有关。我用不同的网页尝试了上面的代码,但没有用。也许这与我的安装有关。请注意,我在这台计算机上运行了大量其他Perl脚本(不使用LWP),并且没有出现任何问题。奇怪的