Como extrair texto entre tags HTML ou XML?
Há certos tipos de dados que queremos coletar de um HTML ou XML,
para o tratamento dos mesmos, ou melhor exibição.
Há formas de fazer isto com o TWebBrowser, mas nos obriga a ter
que carregar o arquivo no mesmo e a manipulação não é
muito fácil.
Mas digamos que tenhamos um HTML ou XML em uma variável, ou mesmo
recuperando através de um Get com o Indy (IdHTTP) com Delphi,
como podemos fazer a mineração dos dados?
Felizmente há uma função bem simples que nos ajudará!
Vamos ao código fonte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function ExtractText(aText, OpenTag, CloseTag : String) : String;
{ Retorna o texto dentro de 2 tags (open & close Tag's) }
var
iAux, kAux : Integer;
begin
Result := '';
if (Pos(CloseTag, aText) <> 0) and (Pos(OpenTag, aText) <> 0) then
begin
iAux := Pos(OpenTag, aText) + Length(OpenTag);
kAux := Pos(CloseTag, aText);
Result := Copy(aText, iAux, kAux-iAux);
end;
end; |
function ExtractText(aText, OpenTag, CloseTag : String) : String;
{ Retorna o texto dentro de 2 tags (open & close Tag's) }
var
iAux, kAux : Integer;
begin
Result := '';
if (Pos(CloseTag, aText) <> 0) and (Pos(OpenTag, aText) <> 0) then
begin
iAux := Pos(OpenTag, aText) + Length(OpenTag);
kAux := Pos(CloseTag, aText);
Result := Copy(aText, iAux, kAux-iAux);
end;
end;
Exemplo de uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| procedure TForm1.Button1Click(Sender: TObject);
const
HTML =
'<html>'+
'<head>'+
'<title>SHOW DELPHI</title>'+
'</head>'+
'<body>'+
'<h1>Titulo 1</h1>'+
'<h2>Titulo 2</h2>'+
'</body>'+
'</html>';
var
variavelString : string;
begin
variavelString := ExtractText(HTML,'<h1>', '</h1>');
ShowMessage( variavelString );
end; |
procedure TForm1.Button1Click(Sender: TObject);
const
HTML =
'<html>'+
'<head>'+
'<title>SHOW DELPHI</title>'+
'</head>'+
'<body>'+
'<h1>Titulo 1</h1>'+
'<h2>Titulo 2</h2>'+
'</body>'+
'</html>';
var
variavelString : string;
begin
variavelString := ExtractText(HTML,'<h1>', '</h1>');
ShowMessage( variavelString );
end;
Espero que seja útil a todos!
Fonte base: https://pt.stackoverflow.com/questions/31767/extrair-texto-entre-tags-html-com-indy-idhttp-com-delphi
Dúvidas ou sugestões, deixe o seu comentário!
-
Giovani Da Cruz
-
9.083 views
- 4 comentários
- 13 de junho de 2017
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Ótima dica brother,
salvou eu rsrsrs
vlw
Obrigado pela diga!
Foi de grande utilidade.
Que bom que foi possível ajudar Kleiton!
Como implementar isso em um XML real? com mais de uma tag ?
Exemplo: uma api retorno 2 registros.