2012-06-12 4 views
2

Итак, я использую WWW :: Mechanize, чтобы получить содержимое страниц, и я бы хотел установить максимальный размер. Кроме того, если достигнут максимальный размер, я хотел бы получить контент, который был получен до этого момента. Я знаю, что в LWP вы можете сделать это следующим образом:perl WWW :: Механизировать заданный максимальный размер и все еще получать контент

my $ua = LWP::UserAgent->new; 
$ua->max_size(1024); 
$ua->get($url); 

И теперь в этот момент, даже если 1024 байт были достигнуты, $ua->content будет по-прежнему держать читаемый контент, который не получил до этого момента. WWW :: Mechanize подкласс LWP, так что вы можете настроить его в основном точно так же:

my $mech = WWW::Mechanize->new; 
$mech->max_size(1024); 
$mech->get($url); 

И тогда вы могли бы подумать, что с WWW :: Mechanize подкласс LWP :: UserAgent, $mech->content будет содержать содержимое, которое было восстановлено до тех пор, пока размер не достигнет 1024 байта. Тем не менее, всякий раз, когда я запускаю это и достигают максимального размера, я получаю содержание от моего WWW :: Механизируйте объект, который выглядит следующим образом:

?|???-???+"?O<?p}?,?ܙmW ?`E??\\ސ???ѧ??U{3??? 

Кто-нибудь знает, как я могу получить WWW :: Mechanize на самом деле что-то выходной читаемый как его суперкласс LWP :: UserAgent делает? Мне нравятся некоторые дополнительные функции, которые предоставляет WWW :: Mechanize, поэтому я хотел бы иметь возможность использовать это, если все возможно, а не переключиться на LWP только для этого. Благодаря!

+1

Вы читаете GZIP сжатый или вход позволяет серверу посылать сжатую ввод? – mob

+0

Возможный дубликат http://stackoverflow.com/questions/10989684/lwp-set-max-size-but-still-get-content? – dgw

+0

это не дубликат, потому что это спрашивает, как это сделать с помощью WWW :: Mechanize. – srchulo

ответ