Clipper On Line • Ver Tópico - Converter HTML para Texto

Converter HTML para Texto

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Converter HTML para Texto

Mensagempor asimoes » 03 Fev 2012 09:15

Pessoal,

Como não achei nada na internet e falta de tempo mesmo, acabei criando uma função para isso:

Qualquer sugestão fiquem a vontade para melhorar a função, a principio está me atendendo.

Uso: Html2Texto(cArquivo)
FUNCTION Html2Texto(cArq)
LOCAL cTexto:="", cLinha:="", nLinha, nPosIni, nPosFim, cChar

   FT_FUSE( cArq )
   DO WHILE !FT_FEOF()
      cLinha:=FT_FREADLN()
      cLinha:=StrTran( cLinha, Chr(12)) // Elimina caracter EJECT
      cLinha:=StrTran( cLinha, Chr(13))
      FOR nLinha:=1 TO Len(cLinha)
         nPosIni:=At('<', cLinha)
         nPosFim:=At('>', cLinha)
         cChar:=SubStr(cLinha,nPosIni,nPosFim)
         cLinha:=StrTran(cLinha,cChar)
         //? cLinha, nPosIni, nPosFim 
         //inkey(0)
         IF nPosIni == 0 .AND. nPosFim == 0
            EXIT
         ENDIF
      NEXT
      cTexto+=cLinha
      FT_FSKIP()
   ENDDO
   FT_FUSE()
//HTML exemplo:
/*<html>
<body>
<center><b><font color="#0000FF">Email enviado com sucesso</font></b></center>
</body>
</html>*/
RETURN cTexto
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter HTML para Texto

Mensagempor Pablo César » 03 Fev 2012 12:57

Parece haver algum erro, não está retornando corretamente o conteúdo até o final de arquivo. Vou verificar mais tarde e posto o resultado. O uso das funções FT_* tinham um bug, que foi consertado, não sei ao certo ainda se é isso. Mas vou ver mais tarde...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Converter HTML para Texto

Mensagempor Pablo César » 03 Fev 2012 14:20

Na sua função, de interpretar linha a linha, falta elaborar mais fim de interpretar por exemplo:

- As tags  <br /> <br />  para desdobrar as quebras de linhas do próprio texto do html.
- As macros do próprio php  &?acute;  os  &ccedil;  para transformar em acentos, c cedilhas do texto do html

Enfim um série de tags que podem compor um html.

Na minha opinião, a utilização da função oActiveX:ExecWB() que marca e copia para a área de transferência é mais fácil de obter o mesmo ou quase o mesmo resultado. Exemplo dessa utilização eu faço no módulo WebGets.prg do Aplicativo para alterar data e hora na inicialização-Windows onde capturo a tela, copio na área de transferência e leio em forma de string o seu conteúdo em texto.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Converter HTML para Texto

Mensagempor asimoes » 03 Fev 2012 15:01

Olá Pablo,

Se você olhar no final da função tem um exemplo de html que é o objeto do meu problema.
A função já funcionou comigo usando as funções FT* e tudo que está entre < > inclusive é eliminado do texto.
ficando somente o texto do exemplo: Email enviado com sucesso
A função que eu fiz não é solução definitiva, pode ser melhorada.

*/<html>
<body>
<center><b><font color="#0000FF">Email enviado com sucesso</font></b></center>
</body>
</html>*/
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter HTML para Texto

Mensagempor Pablo César » 03 Fev 2012 15:30

Pois é... pra mim não deu muito certo não. Gravei esta página deste tópico em htm e quis ver o resultado mas abortou quando encontrou o primeiro tag  <head> 
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Converter HTML para Texto

Mensagempor asimoes » 03 Fev 2012 16:17

Pablo,

Eu estou usando o harbour baixado pelo svn.

Meu programa de teste que funcionou. ou melhor está funcionando. acabei de testar.

FUNCTION MAIN
CLS
IF Inetestaconectada()=.F.
   alert("para testar essa função você deve ter acesso a internet, favor vereficar")
   RETURN Nil
ENDIF
Consulta()
RETURN Nil

FUNCTION Consulta
LOCAL oPg  :=Win_OleCreateObject("Microsoft.XMLHTTP")
oPg:Open("GET",'http://xxxxxxx.xxx.xx.xxx.br/cgi-bin/EnviaEmail_CGI.exe?Nome=Teste&Assunto=Teste de email Harbour&Destinos=[]Equipe03&CC=[]Equipe07&BCC=asimoesluz@gmail.com&ResponderPara=&Origem=hhelpdes@smf.com&EhErro=F&Html=F&Corpo="Testando envio de email com o Harbour"')
oPg:Send()
DelayResposta(3)
cBuf:=oPg:responseText
IF File("resposta.txt")
   FErase("resposta.txt")
ENDIF

EscreveLinha(cBuf,"resposta.txt")

cResposta:=Html2Texto("resposta.txt")

IF Empty(cResposta)
   alert("Email não enviado.")
ELSE
   alert(cResposta)
ENDIF
quit

RETURN Nil

FUNCTION DelayResposta(nDelay)
FOR I:=1 TO nDelay
   Inkey(1)
NEXT
RETURN Nil

FUNCTION Html2Texto(cArq)
LOCAL cTexto:="", cLinha:="", nLinha, nPosIni, nPosFim, cChar

   FT_FUSE( cArq )
   DO WHILE !FT_FEOF()
      cLinha:=FT_FREADLN()
      cLinha:=StrTran( cLinha, Chr(12)) // Elimina caracter EJECT
      cLinha:=StrTran( cLinha, Chr(13))
      FOR nLinha:=1 TO Len(cLinha)
         nPosIni:=At('<', cLinha)
         nPosFim:=At('>', cLinha)
         cChar:=SubStr(cLinha,nPosIni,nPosFim)
         cLinha:=StrTran(cLinha,cChar)
         //? cLinha, nPosIni, nPosFim 
         //inkey(0)
         IF nPosIni == 0 .AND. nPosFim == 0
            EXIT
         ENDIF
      NEXT
      cTexto+=cLinha
      FT_FSKIP()
   ENDDO
   FT_FUSE()
/*<html>
<body>
<center><b><font color="#0000FF">Email enviado com sucesso</font></b></center>
</body>
</html>*/
RETURN cTexto

FUNCTION inetestaconectada( cAddress )
LOCAL aHosts, cName
InetInit()
IF cAddress == NIL
   cAddress := "www.google.com.br"
ENDIF
aHosts := InetGetHosts( cAddress )
IF aHosts == NIL .OR. Len(aHosts)=0
   InetCleanup()
   RETURN .F.
ENDIF
InetCleanup()
RETURN .T.

FUNCTION AbreLinha(nLinha,cArq)
LOCAL I
DEFAULT nLinha TO 1
   FOR I:=1 TO nLinha
      StrFile(""+HB_OsNewLine(),cArq,.T.)
   NEXT
RETURN Nil

FUNCTION EscreveLinha(cVar,cArq)
   StrFile(cVar,cArq,.T.)
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter HTML para Texto

Mensagempor asimoes » 03 Fev 2012 18:24

Pablo,

Vi que você está usando activex, tem como adaptar pro exemplo que postei?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter HTML para Texto

Mensagempor Pablo César » 05 Fev 2012 12:44

Mas a questão que teria que exibir a página, posicionar-se e aí capturar, entendeu ? Seria o caso diferente do que você fez. Pois deveria baixar página, não sei se daria de copiar sem exibir...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Converter HTML para Texto

Mensagempor rochinha » 05 Fev 2012 19:10

Amiguinhos,

Voces poderia tentar com esta função:
FUNCTION CleanHTML( cfile )
    LOCAL oExplorer := TOLEAuto():New( "InternetExplorer.Application" )
    oExplorer:Navigate2( cfile )
    DO WHILE oExplorer:ReadyState <> 4
       HB_IDLESLEEP( 1 )
    ENDDO
    cINNText := oExplorer:Document:Body:InnerText
    MemoWrit( "t.txt", cINNText )
    MemoEdit( MemoRead( "t.txt" ) )
    oExplorer:Quit()
    RETURN NIL


Passando no parametro o URL.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Converter HTML para Texto

Mensagempor rochinha » 06 Fev 2012 09:13

Amiguinhos,

Por favor me informem qual a biblioteca do HARBOUR que possui as funções FT_*.

Tenho uma porrada de bibliotecas e duzentas versões de Harbour aqui mas não encontrei.

Obrigado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Converter HTML para Texto

Mensagempor Pablo César » 06 Fev 2012 10:55

Por favor me informem qual a biblioteca do HARBOUR que possui as funções FT_*.
É da contrib hbnf Rochinha.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Converter HTML para Texto

Mensagempor rochinha » 06 Fev 2012 10:59

Amiguinho,

Valeu, vou acrescenta-la agora, apesar de ter olhado internamente a procura das funções.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Converter HTML para Texto

Mensagempor asimoes » 06 Fev 2012 13:00

Olá Rochinha,

O seu exemplo funcionou perfeitamente.
A biblioteca ft* é a hbnf
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter HTML para Texto

Mensagempor clodoaldomonteiro » 05 Set 2018 14:54

Boa tarde,

Retomando esse tópico, pergunto se tem como pegarmos um HTML e transformarmos em Dados, como por exemplo, separado por vírgula .CSV?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 16 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro