如何使用LWP获取网页的开头?

时间:2012-06-11 16:36:11

标签: perl lwp

有没有人知道在GET或POST请求中获取网页的50%的最佳方法?我获取的网页需要10秒,20秒完全加载,我只需要从页面开头过滤几行。

3 个答案:

答案 0 :(得分:7)

use 5.010;
use strictures;
use LWP::UserAgent qw();

my $content;
LWP::UserAgent->new->get(
    $url,
    ':content_cb' => sub {
        my ($chunk, $res) = @_;
        state $length = $res->header('Content-Length');
        $content .= $chunk;
        die if length($content) / $length > 0.5;
    },
);

答案 1 :(得分:3)

如果相关网站支持Content-Length标题,您可以询问将要发送多少数据并仅请求一半数据。

此代码演示。

use strict;
use warnings;

use LWP;

my $ua = LWP::UserAgent->new;
my $url = 'http://website.test';

my $resp = $ua->head($url);
my $half = $resp->header('Content-Length') / 2;

$resp = $ua->get($url, Range => "bytes=1-$half");
my $content = $resp->content;

答案 2 :(得分:2)

如果Web应用程序需要很长时间来呈现页面,您通常无法通过获取页​​面的“一半”来加速该过程。

将在所有数据库查询和实际渲染完成后传递页面。这些可能是长时间拖延的原因。