Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Baixando o Diário Oficial inteiro de uma vez só
Colaboração: Bruno Buys
Data de Publicação: 09 de Agosto de 2007
Quem precisa trabalhar com o Diário Oficial da União tem que usar um aplicativo em javascript no site da Imprensa Nacional, que, convenhamos, deixa a desejar. Só se vê uma página de cada vez, é lento e não dá para fazer buscas no Diário inteiro.
Eu decidi escrever o shell script abaixo porque salvar página por página no braço não era uma opção, e também porque precisei citar o link direto para o arquivo pdf de uma página.
O script aceita quatro formas de rodar:
baixadiario secao1 # baixa somente a secao 1 do D.O. baixadiario secao2 # baixa somente a secao 2 do D.O. baixadiario secao3 # baixa somente a secao 3 do D.O.
e
baixadiario # sem argumento nenhum ele baixa o D.O. inteiro
Ao fim do processo, o arquivo links.txt guarda os links para cada página do D.O.. Facilita a vida de quem precisa citar páginas, enviar links por email ou coisa parecida.
OBS - O número de página é o último número antes da extensão: "do3-86.pdf" significa "D.O. seção 3, página 86"
OBS 2 - Para quem tiver o pdfjoin instalado (parte do pacote 'pdfjam', no Debian Sarge), os últimos três comandos juntam os pdf's das seções em um único pdf. Quem não fizer questão disso, pode comentar as três linhas, para não ficar vendo mensagem de erro.
#!/bin/bash
# Baixadiario, baixa os DO's do site da Imprensa Nacional. Bruno Buys, dez-2005, out-2006.
# Sob os termos da licensa GNU GPL, v2.0.
ANO=`date +%Y`
MES=`date +%m`
DIA=`date +%d`
# Baixa as paginas com a informacao do numero de pdf's das secoes do DO.
for N in 1 2 3 ; do
wget "http://www.in.gov.br/imprensa/jsp/jsp/jornaiscompletos/visualizacao/pdf/visualiza_pdf.jsp?jornal=do&secao="$N"&pagina=1&data="$DIA"/"$MES"/"$ANO""
mv visua* index$N.htm #Vamos guardar o index, depois, por conveniencia
done
#Isso salva os numeros de paginas que cada secao do DO tem.
SEC1=`cat index1.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
SEC2=`cat index2.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
SEC3=`cat index3.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
funcao_pega_0a9(){
for ((d=1;d<10;d++)) ; do
wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`00$d.pdf
done
}
funcao_pega_10a99(){
if [ $2 -le 100 ] ; then
for ((d=10;d<$2;d++)) ; do
wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`0$d.pdf
done
fi
if [ $2 -gt 100 ] ; then
for ((d=10;d<100;d++)) ; do
wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`0$d.pdf
done
fi
}
funcao_pega_restantes(){
for ((d=100;d<$2;d++)) ; do
wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
done
}
funcao_pega_secao_1(){
funcao_pega_0a9 1
funcao_pega_10a99 1 $SEC1
funcao_pega_restantes 1 $SEC1
}
funcao_pega_secao_2(){
funcao_pega_0a9 2
funcao_pega_10a99 2 $SEC2
funcao_pega_restantes 2 $SEC2
}
funcao_pega_secao_3(){
funcao_pega_0a9 3
funcao_pega_10a99 3 $SEC3
funcao_pega_restantes 3 $SEC3
}
case $1 in
secao1)
funcao_pega_secao_1
;;
secao2)
funcao_pega_secao_2
;;
secao3)
funcao_pega_secao_3
;;
*)
funcao_pega_secao_1
funcao_pega_secao_2
funcao_pega_secao_3
;;
esac
#Opcional, pra quem tiver o pdfjoin (parte do pacote 'pdfjam', no Debian) instalado:
pdfjoin `ls do1*.pdf` --outfile secao1.pdf
pdfjoin `ls do2*.pdf` --outfile secao2.pdf
pdfjoin `ls do3*.pdf` --outfile secao3.pdf
exit 0
Veja a relação completa dos artigos de Bruno Buys
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
30 Out 2009, 09:40
http://www.in.gov.br/imprensa/pesquisa/pesquisaresultado.jsp?d-7825134-p=1&origem=pesquisa_resultado&idJornal=1&idJornal=2&idJornal=3&idJornal=4&idJornal=5&dataPublicacaoInicial=01/01&rbfonetica=0&texto_todas=Universidade+Federal+de+Minas+Gerais&dataPublicacaoFinal=31/12&ano=2009
este está configurado para todos os jornais de 2009.
09 Out 2009, 11:42
06 Out 2009, 10:55
11 Ago 2009, 14:59
A página do projeto é essa:
http://sourceforge.net/projects/trasdia/
O site é esse:
http://trasdia.sourceforge.net/
Se não estiver funcionando pode ser que tenham mudado para:
http://sourceforge.net/projects/trazdia/
http://trazdia.sourceforge.net/
Um dos programas baixa os diários, converte para txt e procura pelas palavras que você quiser neles.
O outro procura direto nos sites do governo e te avisa se apareceram novos diários com as palavras procuradas.
Tem um pacote para Windows e outro para Linux.
Estou lançando os dois como software livre (código aberto e gratuitos). Espero que sejam úteis para alguém...
08 Jul 2009, 16:50
e a Portaria nº 1.456, de 02/05/1985, Publicada no BS/DG nº 81, de 02/05/1985
01 Jul 2009, 20:49
11 Abr 2009, 19:07
meu email é suporte@williamfelcman.com
porfavor se tiver condições de me passar agradecerei muito !
pois tem tempos que eu preciso de um programa assim !
abraços
07 Abr 2009, 12:35
20 Fev 2009, 10:11
Estou desenvolvendo uma versão para windows utilizando o delphi.
Já consegui automatizar o download das páginas, porém ainda tem um probleminha.
Toda vez que salvo o pdf eu preciso informar o nome do arquivo e clicar em OK, pois o programa abre uma janelinha de salvamento.
Se eu conseguir que ele não abra essa janelinha.. tá feito!
davidleao@gmail.com
23 Jan 2009, 08:52
02 Jan 2009, 16:10
Aguardo resposta
30 Dez 2008, 11:07
28 Out 2008, 16:32
17 Out 2008, 09:48
Bom, agradeço a todos pelas contribuições. Parece que o DO quebrou meu script, certo?
Vou tentar remendá-lo. Para contato sobre esse assunto, podem usar o email "bruno.grupos-_em_-gmail.com".
Depois de algum tempo pesquisando esse assunto, descobri maneiras de fazer coisas bem interessantes com o conteúdo do DO. Por exemplo, uma coisa que vai resolver a necessidade de alguns aqui: é possível converter as páginas pdf do DO em html e torná-las pesquisáveis em massa. Ou seja, não precisa abrir as páginas um a um e fazer Ctrl+F. Em vez disso, dá pra pesquisar um nome ou número ou o que seja em todas as páginas ao mesmo tempo. Isso obviamente, é muito melhor. Quem quiser saber mais, escreva pro meu email.
Algumas respostas individuais:
PARA TODOS QUE QUEREM UMA VERSÃO PRA WINDOWS: Eu ainda não tentei usá-lo em windows. Deve ser possível sim, via cygwin. Mas vai dar algum trabalho. Quem quiser tentar mesmo assim, deixe email pra contato aqui. Para isso eu vou cobrar, ok?
Claudio Rezende: Não conheço bem a infra dos processos da OAB, como você disse. Mas se o que você precisa está no DO, é só eu remendar o script que você consegue. Mas ou você entra no caso acima, de rodar em win, ou você terá que arrumar uma máquina GNU/Linux.
Anderson: Valeu pelo toque. vou tentar remendar sim. Quanto ao pdfjoin, não há problema. Tem diversas maneiras de fazer a mesma coisa...
ISRAEL BENEVENUTO: Esse código é para rodar no Bash, um interpretador de comandos. É possível instalá-lo no win, mas dá trabalho. Além dele, são necessários alguns outros programas padrão para computadores GNU/Linux. Se você quiser ajuda para rodar em win, deixe o seu contato.
Vladimir: Assim que tiver uma nova versão eu aviso aqui mesmo. Fique de olho.
luiz e loly: Não é bem assim que funciona....
Expedito Júnior: Talvez eu tenha algo parecido com o que você precisa. Deixe um contato aqui, ou escreva para o email lá de cima.
adson de souza leite e Rosane santos: O DO do Rio não é coberto pelo script.
nilton: Rodando o script.
Maria Zenaide: Depois de ter o DO do dia, você usa a função de busca do seu leitor de pdf.
marcos maciel: Pra saber isso, só testando. Pegue um link típico do DO e vá substituindo as datas pelas que voce quer.
Alexandre Bittencourt: O putty é um emulador de terminal. Ele só serve pra conectar você, de uma máquina windows, a uma máquina GNU/Linux ou Unix. Você precisa do Bash e de alguns outros utilitários como o wget, ou seja, o putty não vai te ajudar muito, a não ser que você tenha acesso a uma máquina GNU/Linux ou Unix remota. Se quiser tentar rodar pelo win mesmo, veja o caso lá em cima desse post.
16 Out 2008, 19:49
22 Ago 2008, 10:17
, se alguem tiver interesse me passa um email ae. isso no ruindows mesmo.
10 Jul 2008, 12:30
Em relação ao pdfjoin não consegui executar com os parâmetros informados por você mas assim:
pdfjoin --outfile secao1.pdf *.pdf
No mais, se vc conseguir, avise para nós.
Parabéns pelo script,
09 Jul 2008, 12:00
QUAL A FORMA MAIS SIMPLES DE BAIXAR O DOU, COMPLETO DO DIA? EM PLATAFORMA WINDOWS?
24 Jun 2008, 15:27
20 Jun 2008, 23:55
03 Jun 2008, 21:17
assunto é licença sem vencimentos no ano de 2007.att obrigada desde já
07 Mai 2008, 08:38
Estou necessitando desenvolver um aplicativo que faça acompanhamento do conteúdo do Diário Oficial, ou seja, após eu ter baixado, o aplicativo iria filtrar as informações para mim. Tipo: Quando eu informar o nome de uma empresa X o aplicativo retornar uma lista de todos os assuntos publicados no Diário Oficial sobre esta empresa. Você desenvolveria algo desse tipo? Estou disposto a pagar por isso.
Obs: O aplicativo tem que ser interface web.
Grato,
Expedito Júnior
02 Mai 2008, 23:16
18 Abr 2008, 17:55
10 Abr 2008, 18:19
07 Abr 2008, 10:29
26 Fev 2008, 17:14
18 Jan 2008, 10:44
Procurei juntar as suas informações dos códigos descritos acima(Scritp) com a do leitor Juliano E. G(sobre salvar o arquivo em .sh usando um Kedit, mas não consegui sair do lugar.
Sou funcionário de um órgão público, e constantemente eu faço pesquisas do DO e sei o quanto é horrível a forma apresentada de 1 pagina por vez.
SItuação: Eu trabalho com S.O WINDOWS 2000 Professional.
Não sei o que é "TERMINAL SHELL". Já baixei o Putty e procuro estudar sobre tudo que exite na internet, para tentar facilitar minha vida com relação a baixar o DO (Diário Oficial). Você poderia me auxiliar, sendo um pouco mais Analítico?
Já salvei o arquivo em .Sh e já baixei o tal de Putty, mas COMO USA-LO??? COmo faço para usar seu CÓDIGO??
23 Nov 2007, 11:41
passa por ter uma versão do bash rodando em windows. Eu NAO SEI se o script vai rodar direito em um bash pra win, não testei. Voce pode perder seu tempo a toa fazendo isso.
Dito isso, o caminho mais fácil deve ser instalar o cygwin. Procure também isso aqui:
http://www.steve.org.uk/Software/bash/
13 Nov 2007, 21:52
28 Out 2007, 07:38
Gradeço desde já a atenção.
Álvaro A. Pinto
25 Out 2007, 15:09
Obrigado.
25 Out 2007, 14:44
Atenciosamente
Silvio Guerra
13 Set 2007, 18:12
.
Valeu
30 Ago 2007, 21:22
Para ele fazer isso aí que voce quer, substitua todo o começo do script, até a linha (não-incluida!):
for N in 1 2 3 ; do
por isso aqui:
#!/bin/sh
# Baixadiario, baixa os DO's do site da Imprensa Nacional. Bruno Buys, dez-2005, out-2006.
echo "Ano?"
read ANO
echo "Mes?"
read MES
echo "Dia?"
read DIA
e tente rodar. Quando ele perguntar por ano, mes e dia, responda ano com 4 digitos ("2007"), mes e dia com 2 digitos.
Acho que dá pra pegar até d.o. de 2003...
22 Ago 2007, 09:45
14 Ago 2007, 08:08
11 Ago 2007, 00:14
HTTP requisição enviada, aguardando resposta... 404 Not Found
00:12:43 ERRO 404: Not Found.
!









