quinta-feira, 5 de março de 2009

Obter texto de uma página Web

Quantas vezes você já procurou rotinas para capturar e salvar o texto de uma página web? Obter valores, salvar notícias em uma base de dados, enfim várias funcionalidades que podem ser vinculadas de um sistema Win32 utilizando recursos/dados contidos em páginas Web.
Ao contrário de que você deve estar pensando, não importaremos o código fonte da página e depois remover as tags para limpar o texto, a rotina a seguir obterá apenas texto puro, ignorando a captura de qualquer tag HTML. Crie um novo projeto Delphi for Win32, adicione um componente Edit (edtNavigate) para que seja a barra de navegação, um Button com Caption "Navegar". Logo abaixo adicione um componente WebBrowser que usaremos para exibir a página Web em sua forma original, e de onde também iremos retirar o texto da página que está sendo exibida. Por último, adicione logo abaixo ao WebBrowser outro componente Button alterando o Caption para "Obter Texto" e um componente Memo onde iremos exibir o texto extraído da página Web. Altere a propriedade ScrollBars do Memo para ssBoth a fim de que sejam exibidas as barras de rolagem no sentido vertical e horizontal.
Para dar início ao processo de codificação, adicione ao botão "Navegar" a seguinte linha de código, que irá atribuir uma URL ao componente WebBrowser e exibir o conteúdo:


WebBrowser1.Navigate(edtNavega.Text);

Por último, adicionaremos o código ao botão "Obter Texto", que se trata de uma função disponibilizada no componente WebBrowser, a fim de extrair o conteúdo da página exibida.

memo1.Text := WebBrowser1.OleObject.Document.documentElement.innerText;

Pronto, execute agora seu sistema, digite uma URL válida na barra de navegação e exiba o conteúdo da página na tela. Após carregada a página, clique sobre o botão obter texto e observe que todo o texto foi capturado e jogado ao componente Memo, onde poderia ser salvo em uma base de dados ou qualquer outra ação necessária.

Obrigado pela leitura, até a próxima.

3 comentários:

Samuel disse...

Boa o teu artigo, me ajudou bastante com um projeto. Abraço e sucesso!

Willian Nello disse...

Obrigado, me ajudou

Jefmachia disse...

Bem bacana amigo, mas e se eu quiser pegar apenas uma parte de texto e não o site todo. Exemplo: Eu busco uma notícia e quero pegar apenas o texto dessa noticia e não de todo o site. Como eu poderia fazer para capturar apenas o resultado da busca?