Balanço geral das frases buscadas...

Pois é...

lá fui eu olhar o que tinha dado. Categorizei, de forma manual mesmo, as buscas em grandes grupos (no total foram 27 grupos, mais um "outros" das queries que eu não consegui categorizar). Pra minha surpresa, o "fondue" ganhou disparado da "muler pelada". Acho que o povo prefere o pecado da gula ao pecado da luxúria... (ou será só que pouca gente escreve sobre fondue por isso as buscas caem com mais freqüência no meu site? quem irá saber?). Aí em baixo um grafiquinho resumindo meu trabalho:

Gráfico das buscas que mais cairam no meu site, categorizadas por assunto.

Gostei também de saber que procuram meu blog pra "coisas sérias" como compressão de dados e colocação de padres no google maps. Mas o objetivo mesmo não era esse. Era recolher frases legais sobre as quais postar...

Frases legais

quem sou eu? curriculum

Será que esse daí queria que o currículo dele já estivesse pronto na internet? Ou será que ele nem mesmo sabe quem ele é? vai saber... (mas quem quiser, tem um link pro MEU currículo aqui 😉

mera

Ein??? Mera? Que diabos é isso?

moro de favor meu filho pode me visitar

Será que ele(a) acha mais fácil encontrar essa informação na internet do que perguntando pro dono da casa?

passei concurso banco brasil 57 chama

Parabéns, seja lá o que isso queira dizer.

E ainda essas 4 que eu pretendo blogar a respeito com mais tempo:

cosseno o que serve para o futuro;1
que lingua falam? os indios pataxó;1
foto garrafa vinho mioranza;1
porque a água apaga o fogo e o álcool não;1

A da garrafa de mioranza, vinho da família da Carol, eu já posto duma vez:

Os finos, e

os de garrfão!

Os outros assuntos eu blogarei mais tarde, ou outro dia... ou não.

Mais "buscas" que cairam aqui.

Sacumé, eu tinha resolvido reviver o blog a partir das buscas interessantes que caiam nele. Pra isso eu precisava listar todas as buscas e encontrar as interessantes. Achar as buscas foi fácil: meu provedor fornece o "awstats" para analisar o tráfego no site e ele separa isso pra mim. Mas pegar da interface dele tava ficando chato porque são muitas, eu queria organizar e analisar antes de escolher "as melhores". Por isso resolvi tratar direto o arquivo de log do awstats.

Como tratar o arquivo de logs do awstats pra extrair as frases de busca

O primeiro passo foi escolher o arquivo. O awstats usa arquivos mensais. Escolhi, claro, o mais recente, afinal é só uma brincadeira. Encontrar lá dentro o que eu queria foi fácil:

$ grep -ni BEGIN_SEARCHWORDS awstats072008.girino.org.txt
380:BEGIN_SEARCHWORDS 343

Ou seja, na começa na linha 380 e se estende por mais 343 linhas. Então vamos extrair essas informações daí, certo? Fiz esse scriptzinho aqui pra isso:

$ file=awstats072008.girino.org.txt;
$ grep_result=`grep -ni BEGIN_SEARCHWORDS $file`;
$ begin_pos=`echo $grep_result | awk -F: '{print $1}'`;
$ size=`echo $grep_result | awk '{print $2}'`;
$ head -$1) $file | tail -$2)

Podem ver que as 4 primeiras linhas "apenas" processam o tamanho do arquivo para encontrar o inicio e fim do trecho que eu quero extrair. E só a ultima linha faz o trabalho mesmo. Eu poderia ter feito "na mão" e colocado logo:

$ head -$3) awstats072008.girino.org.txt  | tail -$4)

Mas perdia toda a graça de se brincar com linha de comando 😉

Mas ainda tem um detalhe: esses "dados" estão "codificados" para uso em url (urlencoded, para os íntimos), e precisamos decodificar. Eu até pensei em um script perl ou sed ou awk pra isso, mas pra que? Como dizia o João Cupim, meu professor de marcenaria no COLTEC, cada atividade tem sua ferramenta apropriada, não improvise ferramentas. Pois pra lidar com URLs, quem melhor que PHP? Então o que levaria uma dúzia de linhas e prometeria ficar incompleto em perl/sed/awk, vira isto daqui em PHP:

<?php
$line = fgets(STDIN); // reads one line from STDIN
while ($line) {
    echo urldecode($line);
    $line = fgets(STDIN); // reads one line from STDIN
}
?>

E ainda com a garantia do PHP de que vai funcionar e ter atualizações futuras, etc e tal!

Basta lascar isso aí num arquivo "urldecode.php" e chamar:

$ head -$5) $file | tail -$6) | php urldecode.php

Et voilá! Seu arquivo de log foi processado com sucesso ;).

No próximo post eu falo sobre as buscas que encontrei.

References   [ + ]

1, 5. begin_pos+size+1
2, 6. size+2
3. 380+343+1
4. 343+2