Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 使用LWP获取网页内容_Perl_Lwp - Fatal编程技术网

Perl 使用LWP获取网页内容

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

我正试图使用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;

可能有什么问题?

编写脚本时需要考虑的一些常见问题:

  • 增加
    使用严格
  • 添加
    使用警告
路径
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),并且没有出现任何问题。奇怪的