Chron_extract - extractor de cronologias web
Chron_extract é uma script feita em Perl para extrair cronologias a partir de páginas web. Utilizando o módulo Template::Extract, esta script reconhece informação presente em documentos HTML, gerando ficheiros chronl que são interpretados pelo módulo Chronology. A sua utilização passa apenas por etiquetar o documento Html que contém a informação e escrever um ficheiro de configuração onde são indicados os blocos de informação a extrair.
Para testar a script, invocar
./chron_extract.pl config config_extract_1807 outfile inv1807.cl year 1807 inv1807.html
e consultar o ficheiro inv1807.cl gerado.
chron_extract.pl [OPTIONS] ficheiro.html
A secção OPTIONS é do tipo 'chave valor' em que as chaves e valores possíveis são:
Em relação à invocação da script convém ter em conta que:
É composto por um conjunto de blocos separados por uma linha tracejada (-------). Cada bloco é constituído necessariamente por 3 campos: block (nome do bloco), type (tipo do bloco) e format (formato do bloco).
Existem vários blocos possíveis:
[% c1 %]. Recomenda-se também que, entre dois
blocos onde possa haver espaços no documento html, se inclua a etiqueta [% /\s*/ %].
No cado das strings, só é admissível um campo: a própria string. O nome do
campo deverá ser igual ao do bloco mas em minúsculas. Nos blocos do tipo array,
existem campos associados a cada bloco. Para ver os campos disponíveis em cada
bloco, consultar a secção anterior block.
Convém perceber que cada bloco é constituído por vários campos no caso dos
arrays ou de um só campo no caso das strings. Todos os campos seguem o seguinte
esquema: [% c %] em que 'c' é o nome do campo.
Como exemplo, está disponível o ficheiro de configuração do documento inv1807.html.
A etiquetagem do documento Html é muito simples. Basta colocar <!--BEGIN nome_bloco-->
e <!--END nome_bloco--> no início e fim de cada bloco.
Recomenda-se que, no caso de blocos do tipo String a etiqueta BEGIN e END seja
colocada imediatamente antes e depois do texto a extrair. No caso do tipo Array,
recomenda-se que se crie uma nova linha quer para a etiqueta BEGIN quer para a
etqiueta END (ver ficheiro inv1807.html como exemplo).
Quer a etiqueta BEGIN como a END, estão em forma de comentário HTML pelo que
a sua coloção nos documentos não altera a forma como eles são visulalizados
pelos browsers. Pareceu-nos mais sensata esta abordagem do que aquela que foi
seguida no desenvolvimento do módulo WWW::Extractor.
Através da opção debug, é possivel obter informação adicional sobre o comportamento da script. Pode ser muito útil no caso da ocorrência de erros.
Existem 4 niveis de debug:
Toda a informação de debug é enviada para a Standard Error (STDERR).
Aconselha-se que quando se utilize a opção debug, seja também utilizada a opção outfile para se poder distinguir a informação de debug com o código chronl.
O chron_extract não garante que o ficheiro gerado esteja de acordo com a gramática do chronl. Em muitos casos, o código gerado constitui apenas uma aproximação que deverá ser revista e completada pelo utilizador final. Assim, existe uma opção validate que por omissão está activada e que valida o ficheiro gerado. Desta forma, o utilizador fica com uma ideia do estado da cronologia gerada.
Para mais facilmente extrair a informação do documento HTML, é-lhe feito uma normalização que permite remover, entre outras coisas, espaços adicionais ou mudanças de linha.
Como exemplo, está disponível um documento Html contendo uma cronologia das invasões francesas em 1807 (inv1807.html) e o ficheiro de configuração (config_extract_1807). O documento Html foi obtido no do Portal de História (www.arqnet.pt) e está disponível em http://www.arqnet.pt/portal/portugal/invasoes/inv1807.html
Invocando
$./chron_extract.pl config config_extract_1807 outfile inv1807.cl year 1807 inv1807.html
produziria o seguinte output
Block NAME is correctly extracted
Block KEYWORDS is correctly extracted
Block EVENTS is correctly extracted
Examinating the generated file...
The file is valid with the chronl grammatic
Luis Oliveira - luis.oliveira@montemuro.org
Dado que o módulo Template::Extract tem uma grande importância nesta script, recomenda-se a leitura dos seguintes documentos:
Recomenda-se também a leitura da documentação do módulo Chronology uma vez que esta script serve de suporte a esse módulo.