Abrufen der Größe einer URL mit referenziertem Inhalt

Abrufen der Größe einer URL mit referenziertem Inhalt

Gibt es eine empfehlenswerte Möglichkeit, die Bytegröße einer URL mit allen referenzierten Bildern, CSS- und Javascript-Dateien (die Anzahl der Bytes, die ein normaler Besucher erhalten muss, bevor die Seite im Browser vollständig geladen ist) mithilfe von Kommandozeilenprogrammen zu ermitteln? So etwas wie (fiktiv):

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

Ich würde Einschränkungen zustimmen, wie z. B., Referenzen auszuschließen, die dynamisch generiert und von Skripten geladen werden, …. Schon die grundlegenden Informationen, 4.000.000 zu erhalten, wenn eine 15.000 Byte große HTML-Seite ein 3.985.000 Byte großes Bild enthält, wären einen Blick wert. Ich habe derzeit ein Perl-Skript, das die grundlegenden Dinge erledigt:

#!/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";

Dies hat jedoch viele Nachteile. Es wird nur eine Ebene von Links verfolgt, es gibt keine Skriptauswertung, …. Jeder bessere Ansatz, beispielsweise ein Einzeiler mit ausgereiften Tools, wäre willkommen.

Antwort1

Die entsprechende wgetOption ist-p/--page-requisites:

Diese Option veranlasst Wget, alle Dateien herunterzuladen, die für die korrekte Anzeige einer bestimmten HTML-Seite erforderlich sind. Dazu gehören beispielsweise eingebettete Bilder, Sounds und referenzierte Stylesheets.

-H/ --span-hostswird auch empfohlen, wenn die Seite etwas von einer anderen Site verwendet (Gravatar, Google APIs).

-O/ --output-documentgibt alles in eine einzige Datei aus, ohne Markup oder Struktur. Das ist in den meisten Fällen nicht sehr hilfreich, aber gut genug, wenn Sie nur die Größe wissen müssen.

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

verwandte Informationen