Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Separar conteúdo de arquivo HTML


Posts recomendados

Olá! Meu conhecimento em Pascal pode ser considerado básico. E não consigo escrever uma solução para o problema abaixo:

No site da Caixa, disponibilizam os resultados (todos eles) de todas as loterias. Ele vem em formato HTM. Para a Megasena, é uma tabela mostrando nas linhas todos os resultados com informações diversas distribuidas pelas colunas. Cada linha um resultado e nas 21 colunas (Megasena) , informações pertinentes ao próprio.

Preciso colocar num arquivo texto sequencial a informação de cada uma dessas 21 colunas de todos os sorteios já realizados.

O arquivo baixado da Caixa, possui um trecho inutil no começo e outro no final. A parte central tem o que nos interessa, com HTM uniforme que se repete em todas as linhas dos sorteios. Problema que ele não tem marcação de final de linha..... quando mando ler uma linha, ele tenta ler o arquivo todo (1.2Mb) e dá erro de execução. Foi o que conclui.

 

Trecho que interessa:

<tr>

<td rowspan="1">1</td>

<td rowspan="1">11/03/1996</td>

<td rowspan="1">41</td>

<td rowspan="1">05</td>

<td rowspan="1">04</td>

<td rowspan="1">52</td>

<td rowspan="1">30</td>

<td rowspan="1">33</td>

<td rowspan="1">0,00</td>

<td rowspan="1">0</td>

<td rowspan="1">&nbsp</td><td rowspan="1">&nbsp</td>

<td rowspan="1">0,00</td>

<td rowspan="1">17</td>

<td rowspan="1">39.158,92</td>

<td rowspan="1">2016</td>

<td rowspan="1">330,21</td>

<td rowspan="1">SIM</td>

<td rowspan="1">1.714.650,23</td>

<td rowspan="1">0,00</td>

<td rowspan="1">0,00</td></tr>

 

São (hoje) 2065 resultados da Megasena e logo, 2065 trechos desses.

 

Podem me dar alguma dica do caminho a seguir? Tem que ser em Pascal. Uso o Lazarus.

 

Vou publicando aqui o desenrolar. 

 

Abraço à todos e grato pela atenção.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

@Roberto Duha , sobre:

Em 08/08/2018 às 16:25, Roberto Duha disse:

Problema que ele não tem marcação de final de linha..... quando mando ler uma linha, ele tenta ler o arquivo todo (1.2Mb) e dá erro de execução. Foi o que conclui.

 

Ai teria que analisarmos o seu código. Mas eu fiz testes aqui lendo com read() e com readln() e "funcionou".


Um caminho inicial é conseguir ler as linhas do HTM... fiz um código teste para tentar ler, veja:

program TesteMegaSena;
uses
  CRT; //ReadKey()
var
  arqHTM :text;
  linha  :string;
  i      :integer;
  
begin
Assign(arqHTM,'D_MEGA.HTM'); //assinala a variável com o arquivo de "texto"
Reset(arqHTM); //abre o arquivo

//pular linhas inúteis
for i:=1 to 42 do
  readln(arqHTM,linha);
  
//ler linhas
while NOT EOF(arqHTM) do
    begin
    readln(arqHTM,linha); //ler uma string do arquivo
    writeln(linha); //escreve a linha na tela
    ReadKey; //finalidade de aguardar uma tecla para continuar    
    end;            
end.

Para não ler tudo de uma vez... coloquei um ReadKey para aguardar uma tecla ser pressionada.

 

Então, ai poderia criar uma procedure ou function para ler cada trecho. Uma base para extração dados dados é ir identificando o início.. algo como verificando se tem um:

"<td rowspan="    //na verdade basta verificar de tem "<td r", mas em fim

Se a linha tiver esse trecho no início, pega o que vem depois do ">" até o próximo "<" e armazena.

 

Por ai vai.

 

 

É necessário que use o .HTM original? então, tudo meio que depende da necessidade em si. Por exemplo, uma outra forma de tentar extrair seria abrir a HTM pelo navegador, aí seleciona a parte do dados e cola no bloco de notas. Os dados de cada resultado já ficam agrupados numa linha (como visto em Resultas_Mega_Sena.txt). No Pascal, cada linha lida terá os dados de um sorteio, basta separar os dados... 

 

No aguardo.

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!