참조된 콘텐츠가 포함된 URL의 크기 가져오기

참조된 콘텐츠가 포함된 URL의 크기 가져오기

명령줄 유틸리티를 사용하여 참조된 모든 이미지, CSS 및 자바스크립트 파일이 포함된 URL의 바이트 크기(페이지가 브라우저에 완전히 로드되기 전에 일반 방문자가 받아야 하는 바이트 수)를 얻을 수 있는 권장 방법이 있습니까? (가상)과 같은 것 :

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

나는 스크립트에 의해 동적으로 생성되고 로드되는 참조를 포함하지 않는 것과 같은 제한 사항에 동의합니다. 3,985,000바이트 이미지가 포함된 15,000바이트 HTML 페이지가 있을 때 4,000,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, google API)의 항목을 사용하는 경우에도 권장됩니다.

-O/는 --output-document마크업이나 구조 없이 모두 단일 파일로 출력합니다. 이는 대부분의 경우 별로 도움이 되지 않지만, 크기만 알 필요가 있는 경우에는 충분합니다.

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

관련 정보