Hej, du har kommit hit för att leta efter betydelsen av ordet
Utilizador:Schoenfeld/estatísticas.pl. I DICTIOUS hittar du inte bara alla ordboksbetydelser av ordet
Utilizador:Schoenfeld/estatísticas.pl, utan du får också veta mer om dess etymologi, dess egenskaper och hur man säger
Utilizador:Schoenfeld/estatísticas.pl i singular och plural. Allt du behöver veta om ordet
Utilizador:Schoenfeld/estatísticas.pl finns här. Definitionen av ordet
Utilizador:Schoenfeld/estatísticas.pl hjälper dig att vara mer exakt och korrekt när du talar eller skriver dina texter. Genom att känna till definitionen av
Utilizador:Schoenfeld/estatísticas.pl och andra ord berikar du ditt ordförråd och får tillgång till fler och bättre språkliga resurser.
#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;
use HTML::TokeParser;
#Função que retorna o maior dos seus argumentos
sub max{
my @lixo = sort {$b <=> $a} @_;
return $lixo;
}
my $agent = WWW::Mechanize->new();
$agent->agent_alias('Linux Mozilla'); #Se não fingir ser o mozilla a WMF bloqueia a conexão
#Pega a categoria dos idiomas
$agent->get('http://pt.wiktionary.orghttps://dictious.com/pt/Categoria:Idioma');
#inicializa um dicionário para os idiomas
my %idiomas = ();
#número de idiomas
my $contador_idiomas = 0;
#Coloca a lista de idiomas em %idiomas
do{
#cria um parser HTML e envia-lhe a página atual
my $html = HTML::TokeParser->new(\$agent->{content});
#variável auxiliar que guarda o nome do idioma
my $idioma = "";
while(my $tag = $html->get_tag("div")){ #enquanto $tag não for undef, segue para o próximo <div>
if($tag->{class} && ($tag->{class} eq 'CategoryTreeSection')){
$html->get_tag("a");$html->get_tag("a"); #anda dois <a>
$idioma = $html->get_trimmed_text("/a"); #coloca em $idioma o texto entre <a> e </a>
#cria uma entrada para o idioma no hash, e define que categorias gramaticais serão contadas
$idiomas{"$idioma"} = {
"indice" => $contador_idiomas,
"Só idioma" => 0,
"Substantivo" => 0,
"Adjectivo" => 0,
"Verbo" => 0,
"Advérbio" => 0,
"Conjunção" => 0,
"Expressão" => 0,
"Locução" => 0,
"Sigla" => 0,
"Numeral" => 0,
"Pronome" => 0,
"Interjeição" => 0,
"Preposição" => 0,
"Artigo" => 0,
"Total" => 0,
};
$contador_idiomas++;
}
}
sleep 5; #não temos pressa, não queremos sobrecarregar os servidores
} while ($agent->follow_link(text => "próximos 200")); #segue para frente enquanto houver link com texto "próximos 200"
#pega as categorias mais linkadas
$agent->get('http://pt.wiktionary.orghttps://pt.wiktionary.org/w/index.php?title=Especial:Mostlinkedcategories&limit=500&offset=0');
#Pega os dados dos idiomas
do{
my $html = HTML::TokeParser->new(\$agent->{content});
my $tag = $html->get_tag("ol"); #Vai até o primeiro <ol>
my $idioma = "";
while($tag = $html->get_tag("a")){ #enquanto $tag não for undef, segue para o próximo <a>
if($tag->{title} =~ /Categoria:/){ #se for um link para uma categoria
$idioma = $html->get_trimmed_text("/a"); #pega o nome da categoria
my $classe_gramatical = "Só idioma";#Supõe que a categoria é da forma 'idioma', e não 'classe gramatical (idioma)'
if($idioma =~ /(*)\s\((*)\)/){#Se for da forma 'classe gramatical (idioma)', ajusta o valor das variáveis
$idioma = $2;
$classe_gramatical = $1;
}
if (exists $idiomas{"$idioma"}) {#se realmente é uma categoria de idioma
if (exists $idiomas{"$idioma"}->{"$classe_gramatical"}) {#e se realmente é uma categoria de classe gramatical
my $numero = $html->get_trimmed_text("/li"); #pega o número de artigos linkados
$numero =~ s/\D//g; #deixa apenas os dígitos
$idiomas{"$idioma"}->{"$classe_gramatical"} = $numero; #atualiza o hash
if($classe_gramatical ne "Só idioma") {$idiomas{"$idioma"}->{"Total"} += $numero;}; #atualiza o total
}
}
}
}
sleep 5; #não temos pressa, não queremos sobrecarregar os servidores
} while ($agent->follow_link(text => "próximos 500")); #segue para frente enquanto houver link com texto "próximos 500"
#Cria a tabela com os idiomas, ordenada por max(total,só idioma)
my $idioma;
my $posicao = 1; #guarda o rank do idioma
#Constrói o cabeçalho da tabela
print "{|border=\"2\" cellpadding=\"4\" cellspacing=\"0\" style=\"margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;\"
!bgcolor=#CCCCCC|
!bgcolor=#CCCCCC|'''Idioma'''
!bgcolor=#CCCCCC|Substantivo
!bgcolor=#CCCCCC|Adjetivo
!bgcolor=#CCCCCC|Verbo
!bgcolor=#CCCCCC|Expressão
!bgcolor=#CCCCCC|Advérbio
!bgcolor=#CCCCCC|Sigla
!bgcolor=#CCCCCC|Numeral
!bgcolor=#CCCCCC|Pronome
!bgcolor=#CCCCCC|Interjeição
!bgcolor=#CCCCCC|Locução
!bgcolor=#CCCCCC|Preposição
!bgcolor=#CCCCCC|Conjunção
!bgcolor=#CCCCCC|Artigo
!bgcolor=#CCCCCC|Total
!bgcolor=#CCCCCC|Só idioma
|---- bgcolor=#FAFAFA\n";
#Constrói cada linha da tabela
for $idioma (sort {max($idiomas{$b}{"Só idioma"},$idiomas{$b}{"Total"}) <=> max($idiomas{$a}{"Só idioma"},$idiomas{$a}{"Total"})} keys %idiomas ) {
if($posicao <= 50){ #coloca apenas os cinqüenta primeiros na tabela
print "!<!-- posição --> $posicao\n";
print "!<!-- idioma --> $idioma\n";
print "|<!-- subst. --> ".$idiomas{"$idioma"}->{"Substantivo"}."\n";
print "|<!-- adj. --> ".$idiomas{"$idioma"}->{"Adjectivo"}."\n";
print "|<!-- verb. --> ".$idiomas{"$idioma"}->{"Verbo"}."\n";
print "|<!-- expr. --> ".$idiomas{"$idioma"}->{"Expressão"}."\n";
print "|<!-- adv. --> ".$idiomas{"$idioma"}->{"Advérbio"}."\n";
print "|<!-- sigla --> ".$idiomas{"$idioma"}->{"Sigla"}."\n";
print "|<!-- num. --> ".$idiomas{"$idioma"}->{"Numeral"}."\n";
print "|<!-- pron. --> ".$idiomas{"$idioma"}->{"Pronome"}."\n";
print "|<!-- interj. --> ".$idiomas{"$idioma"}->{"Interjeição"}."\n";
print "|<!-- loc. --> ".$idiomas{"$idioma"}->{"Locução"}."\n";
print "|<!-- prep. --> ".$idiomas{"$idioma"}->{"Preposição"}."\n";
print "|<!-- conj. --> ".$idiomas{"$idioma"}->{"Conjunção"}."\n";
print "|<!-- art. --> ".$idiomas{"$idioma"}->{"Artigo"}."\n";
print "!<!-- total --> ".$idiomas{"$idioma"}->{"Total"}."\n";
print "!<!-- só idioma --> ".$idiomas{"$idioma"}->{"Só idioma"}."\n";
if($posicao < 50) {print "|-\n";}; #para que não haja uma linha a mais na tabela, o último verbete não deve imprimir isso
}
$posicao++
}
print "|}";#fecha a tabela