2012-03-07 7 views
-1

私はPerlのWebページのテキストとテキストの比率を決定する方法を探しています。何も探していない複雑なHTMLコードのような単純なプリントアウト:75%テキスト:25%SEO理由だけ。Perlテキストのコード比率

+1

私は、ファイルとしてWebページを取る変数に配置して、HTMLコードと表示されるテキストである割合である割合を決定したいと思いSEO – Zaid

+0

を明確にしてください。 – Blnukem

+1

HTMLタグはめったに「コード」ではありません。 "マークアップ"という用語を使用するのはどうですか? – mob

答えて

-2

うーん...すぐに考えて...についてどのように:

perl SCRIPT file1.html file2.html 

注:

my $htmllength = 0; 
my $textlength = 0; 
while(<>) { 
    s/(<[^>]*>)/$htmllength += length($1); "";/eg; 
    $textlength += length($_); 
} 

print "HTML Code: " . (100 * $htmllength/($htmllength + $textlength)) . "\n"; 
print "Text  : " . (100 * $textlength/($htmllength + $textlength)) . "\n"; 

あなたは、単に問題のファイル(複数可)上でスクリプトを実行することができ、このデータにCDATAフィールドが含まれている場合は機能しません。

+1

[正規表現で\ [X \] HTMLを解析することはできません](http://stackoverflow.com/a/1732454/119280)! – DVK

+0

いいえ、でも私はそれを解析していません。しかし、私はプレゼンテーションに目に見えない可能性のあるコンテンツを通しています。 –

+0

すべての否定的な投票ありがとう!私に失敗したファイルを表示して、その投稿を削除します!ランダムな推測で –

4

HTML :: TreeBuilderを使用してテキストを取り除きます。

#!/usr/bin/perl 

use strict; 
use warnings; 
use v5.10; 

use LWP::Simple; 
use HTML::TreeBuilder; 

my $content = get(shift @ARGV); 
die "Couldn't get it!" unless defined $content; 

my $text = HTML::TreeBuilder->new_from_content($content)->as_text; 

my $html_size = length $content; 
my $text_size = length $text; 
my $percentage = 100 * ($text_size/$html_size); 

say qq[$percentage%]; 
+0

ASCII以外の文字も正しく処理できますか? – Zaid

+0

私はちょうど実行した迅速なテストに基づいてそれらをうまく処理するようです。 – Quentin