2012-03-07 28 views
-1

我正在尋找一種方法來確定Perl中的網頁代碼與文本的比例。不尋找任何複雜的只是簡單的打印出來,如HTML代碼:75%文本:25%只是爲了SEO的原因。Perl文本與代碼比率

+1

請澄清SEO – Zaid 2012-03-07 14:36:41

+0

我想借一個網頁作爲一個文件,放到一個變量,確定是HTML代碼,這是可見的文本的百分比。 – Blnukem 2012-03-07 14:41:32

+1

HTML標籤很少是「代碼」。如何使用術語「標記」? – mob 2012-03-07 18:13:01

回答

-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"; 

然後,您只需對有問題的文件(S)運行腳本本如果您的數據包含任何CDATA字段,將不起作用

+1

[你不能使用正則表達式解析\ [X \] HTML](http://stackoverflow.com/a/1732454/119280)! – DVK 2012-03-07 15:33:52

+0

不,但我不解析它。但是,我正在讓內容透過,否則這些內容可能無法在演示文稿中看到。 – 2012-03-07 16:34:09

+0

感謝所有反對票!向我展示一個失敗的文件,我將刪除該文章! – 2012-03-08 14:46:20

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 2012-03-07 15:28:01

+0

似乎根據我剛跑過的快速測試來處理它們很好。 – Quentin 2012-03-07 16:11:13