NOME

Chron_extract - extractor de cronologias web


DESCRI플O

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.


INVOCA플O

chron_extract.pl [OPTIONS] ficheiro.html

A sec豫o OPTIONS � do tipo 'chave valor' em que as chaves e valores poss�veis s�o:

debug 1|2|3|4
Permite especificar o n�vel de debug que se pretende. Existem 4 n�veis de debug (de 1 a 4). Para saber melhor o que representa cada um deles, consulte a sec豫o DEBUG.

config conf_file
Permite indicar o path para o ficheiro de configura豫o. Omitindo esta op豫o, � utilizado o ficheiro ./config_extract para leitura das configura寤es.

year yyyy
Permite indicar o ano da cronologia (no caso de todos os eventos terem decorrido no mesmo ano).

month mm
Permite indicar o m�s - em formato num�rico - da cronologia (no caso de todos os eventos terem decorrido no mesmo m�s).

outfile file.cl
Permite especificar um ficheiro chronl para guardar a informa豫o gerada. Por omiss�o, � utilizada a standard Output.

validate true|false
Permite fazer uma valida豫o final do c�digo chronl gerado. Por omiss�o, o valor � true.

Notas:

Em rela豫o � invoca豫o da script conv�m ter em conta que:

i)
A ordem pela qual s�o especificadas as v�rias OPTIONS � irrelevante. Contudo, o path para o ficheiro dever� ser sempre o �ltimo argumento. Nunca poder� vir no bloco de options.

ii)
As op寤es year e month, sendo especificadas, t�m prioridade sobre uma string para captar o m�s ou o ano no meio do texto. Dada a facilidade com que s�o passadas estas op寤es, recomenda-se fortemente a sua utiliza豫o no caso de todos os eventos da cronlogia extra�da terem ocorrido num mesmo ano e/ou m�s.


FICHEIRO DE CONFIGURA플O

� 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).

block
Nome do bloco a extrair. � especialmente importante porque vai permitir identificar uma dado bloco no documento html.

Existem v�rios blocos poss�veis:

i) NAME (tipo String)
nome da cronologia

ii) IDCHRON (tipo String)
identificador da cronologia

iii) EVENTS (tipo Array)
bloco de eventos que comp�em a cronologia. Em cada evento, podem-se utilizar os campos year, month, day, name, id e description referentes a um evento.

iv) KEYWORDS (tipo String)
conjunto de palavras-chave da cronologia

type
Tipo de um bloco. Pode ser uma string se for para extrair uma frase ou um array se se pretender extrair um conjunto de linhas que seguem um dado formato.

format
Formato de um bloco. Segue a sintaxe do Template::Extract pelo que recomenda-se a leitura da documenta豫o deste m�dulo. Conv�m saber que sempre que se pretende extrair um campo c1 de uma frase, temos de colocar [% 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.


ETIQUETAGEM

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.


DEBUG

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:

  1. n�vel m�nimo de debug (valor por omiss�o)

  2. � feito um dumper da estrutura que armazena a informa豫o extra�da

  3. al�m do que � feito nos n�veis anteriores, s�o mostradas todas as express�es regulares utilizadas na processo de extra豫o. Note-se que esta informa豫o � gerada pelo m�dulo Template::Extract.

  4. mostra apenas o ficheiro html normalizado (antes de ser processado)

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.


VALIDA플O

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.


NORMALIZA플O

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.


EXEMPLOS

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


AUTOR

Luis Oliveira - luis.oliveira@montemuro.org


VER TAMB�M

Dado que o m�dulo Template::Extract tem uma grande import�ncia nesta script, recomenda-se a leitura dos seguintes documentos:

Documenta豫o da vers�o 0.35 do m�dulo (mais recente)
http://search.cpan.org/~autrijus/Template-Extract-0.35/lib/Template/Extract.pm

Artigo da Oreilly sobre o m�dulo Template::Extract
http://www.oreillynet.com/pub/a/javascript/excerpt/spiderhacks_chap01/

Exemplo de utiliza豫o do Template::Extract
http://www.perladvent.org/2003/5th/

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.