Получение размера URL-адреса со ссылочным содержимым

Получение размера URL-адреса со ссылочным содержимым

Есть ли рекомендуемый способ получить размер URL-адреса в байтах со всеми связанными изображениями, файлами CSS и javascript (количество байтов, которое должен получить обычный посетитель, прежде чем страница полностью загрузится в браузере) с помощью утилит командной строки? Что-то вроде (вымышленное):

wget --output-format=mozilla-archive-format --with-referenced-content --compression=0       \
    'http://www.example.com/' > temp.maff && stat -c%s temp.mapp ; rm temp.maff

Я бы согласился на ограничения, например, не включать ссылки, которые динамически генерируются и загружаются скриптами, .... Даже базовая информация, получение 4 000 000, когда есть 15 000 байт HTML-страницы с 3 985 000 байт изображения на ней, уже стоила бы рассмотрения. В настоящее время у меня есть скрипт Perl, который делает самое простое:

#!/usr/bin/perl
use URI;
$html = `wget -qO - '$ARGV[0]'`;
$sum = length($html);
while($html =~ /\bsrc="(.*?)"/g){
    $url = URI->new_abs($1, $ARGV[0]);
    $head = `curl -I --silent '$url'`;
    if($head =~ /Content-Length: ?(\d+)/){
        $size = scalar($1);
    }else{
        $size = length(`wget -qO - '$url'`);
    }
    $sum += $size;
}
print "$sum\n";

Однако у этого есть много недостатков. Только один уровень ссылок, по которым осуществляется переход, нет оценки скрипта, .... Любой лучший подход, может быть, однострочный с использованием зрелых инструментов, был бы оценен.

решение1

Соответствующий wgetвариант:-p/--page-requisites:

Эта опция заставляет Wget загружать все файлы, необходимые для правильного отображения данной HTML-страницы. Сюда входят такие вещи, как встроенные изображения, звуки и ссылочные таблицы стилей.

-H/ --span-hostsтакже рекомендуется, если страница использует что-либо с другого сайта (Gravatar, API Google).

-O/ --output-documentвыведет все это в один файл, без какой-либо разметки или структуры. Это не очень полезно в большинстве случаев, но достаточно хорошо, если вам нужно только знать его размер.

wget -p -H 'http://www.example.com/' -O tempfile
wc -c < tempfile

Связанный контент