Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais


 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa Nagios

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Publicar em del.icio.us

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

  • Currently 3.03/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (534 votos)

Recomende este site
Recomendar este artigo


Versão para impressão


Opinião dos Leitores

ANDREA
28 Out 2008, 16:32
PRECISO SABE COMO BAIXAR TODO O JORNAL D.O DO RIO DE JANEIRO, E OUTRA QUEM SOUBER DE UM PROGRAMA QUE FAÇA PESQUISA NESSE CONTEUDO , QUE FAÇA BUSCAR AUTOMATICAMENTE NO ARQUIVO ME AJUDA ........URGENTE.
bruno buys
17 Out 2008, 09:48
Olá pessoal! Muito movimento por aqui... Faz algum tempo que não entro.
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.
CLAUDIO REZENDE
16 Out 2008, 19:49
Estou necessitando desenvolver um aplicativo que faça acompanhamento de processos por nome nº da OAB vc desenvove isso e como faço para entrar em contato com vc caso vc faça esse aplicativo
leandro
22 Ago 2008, 10:17
ae pessoal , eu desenvolvi uma forma de baixar todo o conteudo de uma só vez, e depois uso um outro programa para juntar todas as partes
, se alguem tiver interesse me passa um email ae. isso no ruindows mesmo.
Anderson
10 Jul 2008, 12:30
Olá Bruno, muito bom o script, porém como eles mudaram o sistema de visualização do diário ele já não funciona mais, ontem tentei fazer algumas alterações, porém, como não consegui identificar o link dos arquivos pdf, o WGET não baixa o arquivo pdf (mas sim o html do visualizador)

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,
ISRAEL BENEVENUTO
09 Jul 2008, 12:00
ESSE CODICOS SÃO PARA RODAR NO WINDOWS?
QUAL A FORMA MAIS SIMPLES DE BAIXAR O DOU, COMPLETO DO DIA? EM PLATAFORMA WINDOWS?
Vladimir
24 Jun 2008, 15:27
Não está funcionando mais. Voce conseguiu atualiza o script para funcionar novamente?
luiz
20 Jun 2008, 23:55
gostaria de ter a publicaçao do dia 09/06/2008,pag.31,32,33...desde já agradeço.
loly
03 Jun 2008, 21:17
como faço para localizar o nome de uma pessoa no diario oficial
assunto é licença sem vencimentos no ano de 2007.att obrigada desde já
Expedito Júnior
07 Mai 2008, 08:38
Bruno,

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
adson de souza leite
02 Mai 2008, 23:16
Gostaria que vocês ou quem poça me mandar o que foi publicado no Diario Oficial do Estado do Rio de Janeiro, do dia 28/04/2008,pág. 25, em nome de Adson de Souza Leite, obrigado pela atenção. Adson de souza leite
Rosane santos
18 Abr 2008, 17:55
Como eu faço para encontrar o D.O. Diário Oficial do estado do Rio de Janeiro de 10/07/1989
nilton
10 Abr 2008, 18:19
como faço para baixar o diario oficial inteiro
Maria Zenaide
07 Abr 2008, 10:29
Gostaria de saber como pesquisar no diario oficial publicações de fundações de novos sindacatos no diario oficial da união.Ficarei muito agradecida em obter essas informações
marcos maciel
26 Fev 2008, 17:14
gostaria de saber se tem como examinar pela net o diario oficial de 1979. por favor me de uma ajuda, obrigado.
Alexandre Bittencourt
18 Jan 2008, 10:44
bruno buys

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??

bruno buys
23 Nov 2007, 11:41
Não recomendo rodar no windows. Se mesmo assim voces quiserem tentar, o caminho
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/
jose sebastiao rosa
13 Nov 2007, 21:52
Recebi um e-mail da ouvidoria-MPS, dizendo que o resultado do concurso Pericia Medica/inss2006 está no diario oficial da união do dia l8/10/2007 porem não consegui localizar. Gostaria de receber esta pagina.
álvaro augusto pinto
28 Out 2007, 07:38
Gostaria de saber como faço para baixar os Diários Oficiais "on-line" de uma só vêz no "Windows"
Gradeço desde já a atenção.
Álvaro A. Pinto
william guimarães felcman
25 Out 2007, 15:09
gostaria de saber o nome de um programa que me desse condições de fazer o download do diario oficial de uma so vez ..
Obrigado.
Silvio Guerra
25 Out 2007, 14:44
Gostaria de saber como criar essa rotina e em que aplicativo faria isso para rodar no windows.
Atenciosamente
Silvio Guerra
Alisson
13 Set 2007, 18:12
como faço para pegar o diario oficial no R...Windows
.
Valeu
bruno
30 Ago 2007, 21:22
fala juliano,
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...
PAULO DE TARSO
22 Ago 2007, 09:45
gostaria de saber como executar o script, quais ferramentas eu uso
bruno
14 Ago 2007, 08:08
Se voce tentou no sabado 11, é porque sabado nao tem D.O..
Claudio Saad
11 Ago 2007, 00:14
Recebi vários:

HTTP requisição enviada, aguardando resposta... 404 Not Found
00:12:43 ERRO 404: Not Found.

!
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Mão na Massa LDAP - 1 Profissional por Máquina
Configure um serviço de Diretórios baseado no servidor OpenLDAP!
Dia 6 de Dezembro - São Paulo
Saiba mais

Biblioteca

Redes - Guia Prático
Por Carlos. E. Morimoto

Hardware - o Guia Definitivo
Por Carlos. E. Morimoto

Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto

Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto

VPN: Virtual Private Network
Por Lino Sarlo da Silva

MySQL - Guia do Programador
Por André Milani

Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Extreme Programming
Por Vinicius Manhaes Teles

Google Hacking
Por JOHNNY LONG

Elite da Tropa
Por Luis Eduardo Soares, Andre Batista e Rodrigo Pimentel

Harry Potter e as Relíquias da Morte
Por J.K. Rowling

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

PHP para Quem Conhece PHP
Por Juliano Niederauer

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson

Redes de Computadores
Por Andrew S. Tanembaum

Marley e Eu: a Vida e o Amor ao Lado do Pior Cão do Mundo
Por John Grogan

Deus, um delírio
Por Richard Dawkins

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

1808
Por Laurentino Gomes

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson