В то время как вы не показываете код, я предполагаю, что вы следуете в своих выскабливаниях только с ссылками <a href=
, но не с <img src=
или аналогичными ссылками (например, видео, css, favicon ..), которые, очевидно, являются изображениями и прочими типами данных, которые вас не интересуют.
К сожалению, с ссылкой <a href=
невозможно определить, какие данные будут такими. Вы можете сделать некоторые предположения, основываясь на типичном суффиксе ресурса (т. Е. image.png
), но вы не можете быть уверены, что это на самом деле. Эта информация вы получаете только после доступа к ресурсу, например, путем проверки Content-type
, объявленного в заголовке ответа. LWP предлагает способ проверки заголовка ответа перед загрузкой полного ресурса, добавив обработчик для фазы response_header
. От the documentation:
response_header => sub {my ($ response, $ ua, $ h) = @_; ...}
Этот обработчик называется сразу после получения заголовков ответа, но перед любыми данными контента. Обработчик может настроить обработчики для данных, и может сжать, чтобы прервать запрос.
Это может быть использован, чтобы остановить получение ответа на любое нетекстовом содержание:
my $ua = LWP::UserAgent->new;
$ua->add_handler(response_header => sub {
my $resp = shift;
die "no text" if $resp->content_type !~m{^text/};
});
my $resp = $ua->get('http://example.com/some-image.gif');
Я использовал 'LWP :: UserAgent' все время, и он никогда не загружает изображения, только текст. Он также не загружает контент AJAX. – shawnhcorey