[Moscow.pm] Content-Length of Webpage

Alessandro Gorohovski an.gorohovski на gmail.com
Вс Окт 27 00:44:12 PDT 2013


Mons Anderson <mons на cpan.org> писал(а) в своём письме Sun, 27 Oct 2013  
01:30:14 +0300:

> On 26.10.2013, at 23:58, Alessandro Gorohovski <an.gorohovski на gmail.com>  
> wrote:
>
>> Уважаемое сообщество,
>> Добрый вечер!
>>
>> Подскажите,
>> можно ли надежно и как определить размер (объем)
>> предполагаемого к скачиванию контента
>> (например, html-страницы) без загрузки всей страницы.
>>
>>
>> Я сейчас пользуюсь
>>
>> my $agent = LWP::UserAgent->new;
>>
>> my $request = HTTP::Request->new( GET => $url );
>> $request->header('Accept' => 'text/html');
>>
>> my $response = $agent->request( $request );
>
> В этом месте вы уже получили весь ответ целиком.

Согласен.

>> $response->is_success || print FILE_ERR "$id\t$url:\t",  
>> $response->message, "\n";
>>
>> И далее парсим
>> $response->headers_as_string
>>
>> на предмет 'Content-Length'
>>
>> Но, к сожалению удручает то, что не всегда заголовок скачиваемой  
>> страницы
>> содержит поле  'Content-Length'
>> :(
>>
>
>
> Если content-length нет, то значит там ответ transfer-encoding: chunked.
> а это, в свою очередь, означает, то вы не можете заранее узнать какой  
> длины будет ответ, пока не считаете его целиком.

Печально.
А может существует способ при котором можно было бы управлять количество
байт скачиваемого контента, например, загрузив не более 20 kb, прекращать  
прием данных
(разорвать соединение принудительно)
?

-- 
ANG


Подробная информация о списке рассылки Moscow-pm