Pesquisar palavras no Diário Oficial da União
Como o script que compartilhei para as pessoas que precisam baixar o Diário Oficial da União normalmente é utilizado para permitir posterior pesquisa de palavras no PDF, esta alteração faz a pesquisa no DOU escolhido procurando as palavras que estão listadas em um arquivo específico.
Deixa de salvar o PDF e cria um arquivo texto com o resultado da pesquisa.
É necessário criar o arquivo com a lista de palavras a serem pesquisadas e salvá-lo no mesmo diretório do script com o nome de "palavras.lst".
Após executar o script, abra o arquivo com o resultado da pesquisa.
Ex.: para executar o script e consultar a seção 2 do DOU, digite na linha de comando:
$ perl in_lwpsearch.pl 2
O resultado da pesquisa estará em um arquivo com o nome "grep_out_yyyy-mm-dd.txt", onde yyyy-mm-dd indica a data da execução da pesquisa.
Deixa de salvar o PDF e cria um arquivo texto com o resultado da pesquisa.
É necessário criar o arquivo com a lista de palavras a serem pesquisadas e salvá-lo no mesmo diretório do script com o nome de "palavras.lst".
Após executar o script, abra o arquivo com o resultado da pesquisa.
Ex.: para executar o script e consultar a seção 2 do DOU, digite na linha de comando:
$ perl in_lwpsearch.pl 2
O resultado da pesquisa estará em um arquivo com o nome "grep_out_yyyy-mm-dd.txt", onde yyyy-mm-dd indica a data da execução da pesquisa.
Descrição
Como o script que compartilhei para as pessoas que precisam baixar o Diário Oficial da União normalmente é utilizado para permitir posterior pesquisa de palavras no PDF, esta alteração faz a pesquisa no DOU escolhido procurando as palavras que estão listadas em um arquivo específico.
Deixa de salvar o PDF e cria um arquivo texto com o resultado da pesquisa.
É necessário criar o arquivo com a lista de palavras a serem pesquisadas e salvá-lo no mesmo diretório do script com o nome de "palavras.lst".
Após executar o script, abra o arquivo com o resultado da pesquisa.
Ex.: para executar o script e consultar a seção 2 do DOU, digite na linha de comando:
$ perl in_lwpsearch.pl 2
O resultado da pesquisa estará em um arquivo com o nome "grep_out_yyyy-mm-dd.txt", onde yyyy-mm-dd indica a data da execução da pesquisa.
Deixa de salvar o PDF e cria um arquivo texto com o resultado da pesquisa.
É necessário criar o arquivo com a lista de palavras a serem pesquisadas e salvá-lo no mesmo diretório do script com o nome de "palavras.lst".
Após executar o script, abra o arquivo com o resultado da pesquisa.
Ex.: para executar o script e consultar a seção 2 do DOU, digite na linha de comando:
$ perl in_lwpsearch.pl 2
O resultado da pesquisa estará em um arquivo com o nome "grep_out_yyyy-mm-dd.txt", onde yyyy-mm-dd indica a data da execução da pesquisa.
Versões atualizadas deste script
$|=1; # variável que indica para fazer "flush" após cada operação de escrita
my $jornal= shift; # recebe o numero do jornal desejado passado como parâmetro ( 1, 2, 3, 20 ou 1010)
print "Jornal: $jornal\n";
my $arq_palavras= 'palavras.lst'; #nome do arquivo contendo a lista de palavras a serem pesquisadas no texto do pdf (uma palavra ou expressão por linha)
# cada linha com palavra ou expressão será pesquisada em cada linha do pdf;
# se no texto do pdf a ser pesquisado a expressão estiver parte em uma linha e parte em outra ,
# não será encontrada.
use DateTime;
my $dt=DateTime->now->subtract(hours=>3); # recupera a data do sistema e subtrai o fuso horário
$ymd=$dt->ymd; # string da data no formato yyyy-mm-dd
$dmy=$dt->dmy("/"); # string da data no formato dd/mm/yyyy
$year=$dt->year;
$mon=substr("0".$dt->month,-2);
$day=substr("0".$dt->day,-2);
print "Data: $dmy\n";
use LWP::Simple; # módulo para fazer as requisições http de forma simples
use LWP::Simple::Cookies ( autosave => 1,
file => "lwp_cookies.dat" ); # módulo que trata automaticamente do armazenamento e envio de cookies feitos com as requisições de LWP::Simple
$doc = get("http://www.in.gov.br/visualiza/index.jsp?jornal=$jornal&pagina=1&data=$dmy"); #requisição inicial da página do caderno
if ( $doc=~/&totalArquivos=(\d*)"/ ){ # verifica quantas páginas o caderno tem
$paginas=$1;
print "Paginas: $paginas\n";
foreach $i ( 1..$paginas) { # loop para fazer a requisição de todas as páginas
my $arq="IN-Jornal $jornal - $ymd - pag_$i.pdf"; # nome local do arquivo pdf a ser recuperado
getstore("http://www.in.gov.br/servlet/INPDFViewer?jornal=$jornal&pagina=$i&data=$dmy&captchafield=firistAccess",
$arq ) && print "$arq (ok)\n" ; # faz a requisição e armazena
# a linha abaixo extrai o texto do pdf e faz a pesquisa no texto das palavras contidas no arquivo indicado pela variável $arq_palavras
# incluindo no resultado cinco linhas acima e cinco linhas abaixo da linha com a palavra e indicando o nome do arquivo e pagina onde a palavra foi encontrada
# o resultado é redirecionado para um arquivo txt cujo nome indica a data da pesquisa. Ex: grep_out_2013_03_10.txt
system("pdftotext -q '$arq' - |grep -A5 -B5 -i -f $arq_palavras -H --label='$arq ------> '>> ./grep_out_$year-$mon-$day.txt");
unlink $arq;
}
}else { print "IN-Jornal $jornal não disponível!\n" } #avisa se o caderno não está disponível
http://dou.ademirff63.com.br