COMO TRATAR ARQUIVO HTML

GILBERTOJW 20/04/2013 16:07:23
#422229
Pessoal já faz tempo que estou atrás de uma forma de conseguir dados na web e mostra-los em meu aplicativo, mas tá difícil.
Agora percebi que existem formas de jogar para dentro de meu programa o código HTML de uma determinada página, e até já consegui baixar o código para um textboxbox mult line.
Porém quero saber o seguinte : Existe uma forma de tratar o código e retirar dele a informação que preciso ? Por exemplo retirar o valor atual da temperatura para mostrar numa label e o usuário verificar.
Como faço isso ?
PEGUDO 21/04/2013 17:13:26
#422241
Cara,
A primeira coisa a fazer é verificar se o componente HTML de onde você quer retirar a informação possui id.
Vamos supor que eu queira pegar o valor de uma div que tem id = temper:
Dim Div [txt-color=#0000f0]As[/txt-color] HTMLElement = WebBrowser1.Document.GetElementById([txt-color=#e80000][Ô]temper[Ô][/txt-color])
lblVisualizar.Text = Div.InnerText

Este é o modo mais simples de se pegar o valor de um controle na Web.
Mas caso o controle não possua nome, então o processo é mais difícil e para que possamos ajudá-lo, você tem que, pelo menos, passar o endereço da página de onde você quer tirar os valores.
GILBERTOJW 22/04/2013 09:48:28
#422256
Obrigado Pegudo. Como eu avalio o código HTML para ver se ele tem ID ?
GILBERTOJW 25/04/2013 15:18:03
#422498
Pegudo veja se estou indo pelo caminho correto :

[Ô]http://economia.terra.com.br/[Ô]

Nesta página tem algumas coisas que me interessam , então coloquei no load do form, o seguinte código :

WebBrowser1.Navigate([Ô]http://economia.terra.com.br/[Ô])
Dim Div As HtmlElement = WebBrowser1.Document.GetElementById([Ô]Table10[Ô])
Label1.Text = Div.InnerText

Esse [Ô]Table10[Ô] eu peguei da seguinte forma : Puxei o HTML da página e vi que tava assim no HTML : [Ô]id=[Ô]Table10[Ô]

Então achei que era algo que eu podia usar, mas não dá certo. Erro indicado => Object reference not set to an instance of an object.

Me ajuda por favor

RHADYE 25/04/2013 23:57:14
#422531
De uma olhada neste site, que explica o metodo citado: http://www.codeguru.com/vb/vb_internet/html/article.php/c4815/Parsing-HTML-without-Using-the-Browser-Control.htm

e este artigo(anexo no link) também é mto bom,http://www.vbforums.com/showthread.php?480393-VB6-Parse-HTML-Tutorial
GILBERTOJW 26/04/2013 09:29:05
#422537
Caro Rhadye usei o exemplo do codeguru, pois o do vbforum eu não consegui compreensão suficiente para aplicar.
No código codeguru aparecem alguns erros em tempo de projeto. Como eliminá-los ?

Dim objLink As HTMLLinkElement=[txt-color=#0000f0][Ô]type HTMLLinkElement is not defined[Ô][/txt-color]
Dim objMSHTML As New MSHTML.HTMLDocument=[txt-color=#0000f0][Ô]type MSHTML.HTMLDocument is not defined[Ô][/txt-color]
Dim objDocument As MSHTML.HTMLDocument=[txt-color=#0000f0][Ô]type MSHTML.HTMLDocument is not defined[Ô][/txt-color]

While objDocument.readyState <> [Ô]complete[Ô]
DoEvents() =[txt-color=#0000f0][Ô]name do events is not declared[Ô][/txt-color]
End While


Debug.Print = objDocument.documentElement.outerHTML
[txt-color=#0000f0][Ô]overload resolution failed because no accessible print accepts this number of arguments[Ô] [/txt-color]


Se puderem ajudar agradeço;
PEGUDO 28/04/2013 23:35:55
#422647
Cara,
é o seguinte: Deu erro porque, quando você coloca o programa para pegar os dados no load do form, a página não carrega completamente. Assim existem controles que ainda não foram carregados, então quando o programa busca por um controle chamado [Ô]Table10[Ô] e este ainda não foi carregado pela página, surge o erro.
Fiz este exemplo aí embaixo, supondo que os dados serão fixos, ou seja,CDB, Poupança, SELIC, IGPM.
Este exemplo deve conter quatro Labels, onde mostrarão os resultados.
1 - No exemplo, são os Label6, 7 , 8 e 9;
2 - Um WebBrowser1;
3 - Um Botão, chamado de Button1 no exemplo
GILBERTOJW 29/04/2013 10:54:00
#422668
Pegudo no caso de eu usar alguns dados variáveis , como bolsa de valores ( que muda durante o dia ) , tem como eu deixar uma forma de atualizar automático ?

A sugestão com números fixos já está funcionando.Agradeço;
PEGUDO 29/04/2013 15:39:34
#422697
Você pode colocar o código para pegar os dados dentro de um Timer com o interval ajustado em 10 segundos (10000 milisegundos).
Claro, você sabe que as ids e os campos são diferentes e por isso o código acima não vai servir completamente. Talvez modificando uma coisa aqui outra ali, quem sabe. Mas o importante é que o básico você já sabe como fazer. é só seguir o mesmo raciocínio do código acima.
GILBERTOJW 30/04/2013 16:32:04
#422746
Pegudo eu tinha imaginado mesmo essa questão do timer, e já tinha inclusive aplicado, ou seja, já estava funcionando desde ontem.
Mas quero aproveitar essa minha resposta para o seguinte : Quero deixar um imenso elogio pela sua disposição em ajudar. E ressalto que não é a primeira vez que você recebe elogios dentro do VBMania ( já tinha visto outras situações de elogios para você ). Sua disposição em minuciar certas coisas até o ponto de eu entender, foi especial. Muito obrigado mesmo.

Aproveitando, como faço para eliminar a mensagem [Ô]Erro de script do internet explorer - Deseja continuar executando scripts nesta página ?[Ô]
Isso tem feito com que eu tenha que intervir no processo, e não quero que exista a necessidade desta intervenção pelo usuário.

Agradeço;
PEGUDO 01/05/2013 09:00:03
#422771
Após o
WebbBrowser1.Navigate
coloque
WebBrowser1.ScriptErrorsSuppressed = True
Para mais informações: Erro de Script WebBrowser
Obrigado pelas palavras.
Página 1 de 2 [15 registro(s)]
Faça seu login para responder