【问题标题】:Using LWP to get webpage contents使用 LWP 获取网页内容
【发布时间】:2012-03-05 11:27:48
【问题描述】:

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

可能是什么问题?

【问题讨论】:

  • 看起来应该可以了,不是代码问题,你试过直接在脚本上运行perl吗?
  • 感谢您的回复。直接在脚本上运行 perl 是什么意思?我从命令行运行这个脚本。最初,此代码块来自构成 Web 表单的较大代码段。
  • 我的意思是尝试运行 C:\Perl\bin\Perl.exe C:\path\to\script.pl
  • 这个 perl 二进制文件是否运行其他脚本?

标签: perl lwp


【解决方案1】:

您访问的是不允许使用机器人的 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";

【讨论】:

    【解决方案2】:

    编写脚本时要考虑的一些常见事项:

    • 添加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;
    }
    

    【讨论】:

    • 我已经逐字尝试了这个代码,仍然给出了同样的错误。我相信这不是语法或逻辑错误,而是与 windows 有关。我用不同的网页尝试了上面的代码,但无济于事。也许它与我的安装有关。请注意,我在这台计算机上运行了大量其他 Perl 脚本(不使用 LWP)并且没有遇到任何问题。很奇怪。
    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多