问题
It outputs only a few lines from the beginning.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $response = $ua->get('http://www.eurogamer.net/articles/df-hardware-wii-u-graphics-power-finally-revealed');
print $response->decoded_content;
回答1:
I ran the following modification:
my $response = $ua->get( 'http://www.eurogamer.net/articles/df-hardware-wii-u-graphics-power-finally-revealed' );
say $response->headers->as_string;
And saw this:
Cache-Control: max-age=60s
Connection: close
Date: Wed, 06 Feb 2013 23:51:15 GMT
Via: 1.1 varnish
Age: 0
Server: Apache
Vary: Accept-Encoding
Content-Length: 50519
Content-Type: text/html; charset=ISO-8859-1
Client-Aborted: die
Client-Date: Wed, 06 Feb 2013 23:50:50 GMT
Client-Peer: 94.198.83.18:80
Client-Response-Num: 1
X-Died: Illegal field name 'X-Meta-Twitter:card' at .../HTML/HeadParser.pm line 207.
X-Varnish: 630361704
It doesn't seem to like the <meta name="twitter:card" content="summary" />
tag on line 27. It says that it died.
It seems to translate any meta
tag with a name
attribute to a "X-Meta-\u$attr->{name}"
"header". It then tries to store the value of the content
attribute as the X-meta "header" value. Like this (starting at line 194):
if ($tag eq 'meta') {
my $key = $attr->{'http-equiv'};
if (!defined($key) || !length($key)) {
if ($attr->{name}) {
$key = "X-Meta-\u$attr->{name}"; # <-- Here's the little trick
} elsif ($attr->{charset}) { # HTML 5 <meta charset="...">
$key = "X-Meta-Charset";
$self->{header}->push_header($key => $attr->{charset});
return;
} else {
return;
}
}
$self->{'header'}->push_header($key => $attr->{content});
}
I pushed a modified copy of this module into a PERL5LIB directory. I wrapped the push_header
step in an eval
block and downloaded the page completely.
回答2:
I had exactly the same problem...
I fixed it disabling the option 'parse_head' which enables the HTML::HeadParser.
$self->{ua}->parse_head(0);
I know it is not a very good idea to disable this functionality but I prefer availability than correct decoded docs.
来源:https://stackoverflow.com/questions/14740365/why-cant-lwpuseragent-get-this-site-entirely