• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Fatal1ty

[Resolvido] Obter os valores de uma página em html

23 mensagens neste tópico

Só mais uma questão...

Queria obter os valores de uma página em html e passa los para uma label.

Como este exemplo:

      Dim WC As New System.Net.WebClient

      Debug.WriteLine(System.Text.Encoding.ASCII.GetString((WC.DownloadData("http://whatismyip.com/automation/n09230945.asp"))))

      WC.Dispose()

Mas o problema é que a página não contem só os valores que eu quero, por isso não sei como é que posso por exemplo obter só o valor que eu quero, passando o mesmo para uma label.

Espero que me tenha feito entender :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Espero que me tenha feito entender :P

Não!

Se queres ler a informação dessa página e colocar numa label só tens de fazer

        Dim WC As New System.Net.WebClient

        Label1.Text = System.Text.Encoding.ASCII.GetString((WC.DownloadData("http://whatismyip.com/automation/n09230945.asp")))

        WC.Dispose()

Não estou a ver qual o problema.

PS: Nova questão, novo tópico. (ainda por cima não tem nada a ver com o outro problema)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não!

Se queres ler a informação dessa página e colocar numa label só tens de fazer

 

Não estou a ver qual o problema.

PS: Nova questão, novo tópico. (ainda por cima não tem nada a ver com o outro problema)

Vou dar então um exemplo:

http://evoluteam.freehostia.com/PSZone/maxline10.php/

Vês o site? Tem várias coisas escritas, se usasse o método anterior iria passar tudo o que está escrito nessa página... Mas o que eu unicamente quero passar para a label é por exemplo só este excerto do texto "Maxline v1.0".

Ou seja no meio de tantas linhas só preciso de isto na label "Maxline v1.0"

É isso que não sei fazer...

Cumps e desculpa, não sabia que devia ter criado um novo tópico :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então tu lês tudo para uma string, por exemplo, e depois lês apenas o que queres, mas precisas de uma referência.

Imagina que nesse site queres o texto "PStreet.pt.vu", procuras o "Visite:" usando o IndexOf() e depois copias os x caracteres a seguir.

Assim não te estou a entender bem como queres ler essa informação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda não entendi !

Diz lá exactamente o que queres e não dês exemplo vagos. Queres substituir o quê em que página, ou ler o quê ?

Não estás a usar bons exemplo e assim é dificil ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que exactamente quero fazer é que o programa aceda a configuração do router e retire os valores da Margin SN para uma label.

Estas são as minhas configurações do router que se encontram numa página da net:

Ligação DSL

Informações sobre a ligação

Tempo de funcionamento: 0 dias, 1:28:42

Modulação: G.992.5 Annex A

Largura de banda (cima/Baixo) [kbps/kbps]: 511 / 8.127

Dados transferidos (enviados/recebidos) [KB/KB]: 0,00 / 0,00

Alimentação de saída (cima/baixo) [dBm]: 12,0 / 0,0

Atenuação de linha (cima/baixo) [dB]: 16,0 / 32,5

Margem SN (cima/baixo) [dB]: 21,5 / 15,5

ID do fornecedor (local/remoto): TMMB / IFTN

Perda de enquadramento (local/remoto): 0 / 0

Perda de sinal (local/remoto): 0 / 0

Perda de alimentação (local/remota): 0 / 0

Perda de ligação (remota): 0

Erros em segundos (local/remoto): 8.566 / 0

Erros de FEC (cima/baixo): 0 / 0

Erros de CRC (activo/inactivo): 0 / 268

Erros de HEC (cima/baixo): 0 / 106

Resumindo o que quero que o programa faça é que aceda à página do router (http://192.168.1.254/) me retire a margem de SN (21,5 / 15,5) e a passe para uma label.

Claro que os valores variam de router para router, por isso é que o programa tem ir à página do router e passar os valores de Margin SN para uma label.

A unica coisa que quero que ele faça é que retire esse valores de Margem SN ( que podem ser X/ X) para uma label.

Posteriormente com os valores X e X vou efectuar alguns cálculos (mas isso sei fazer)

Espero que agora tenhas entendido  :hmm:

PS: Se tiveres o router Speedtouch 516v6 da Sapo pode verificar os teus valores nesta página http://192.168.1.254/cgi/b/dsl/dt/?ce=1&be=0&l0=1&l1=0 para ver do que falo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não está a resultar.

Se tiveres o mesmo router podes verificar que esse método não funciona.

O erro que dá no VB é "Não é possível actualizar. Base de dados ou objecto só de leitura."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não tenho esse route.

Mas se tens e é sempre uma página que vais pesquisar só precisas de analisar onde procurar e até onde.

Por exemplo, no meu blog vou buscar um titulo "Noticias/Informações:" através de uma parte do texto que pesquiso através do IndexOf()

        Using WC As New System.Net.WebClient

            Dim str As String = WC.DownloadString("http://vbtuga.blogspot.com/2008/12/vbnet-dicas-de-programao-11.html")

          Dim toSearch As String = "Noticias"

            Dim startText As Integer = str.IndexOf(toSearch)

            Dim endText As Integer = str.IndexOf("</h2>", startText)

          Debug.WriteLine(str.Substring(startText, (endText - startText)))

        End Using

Ou seja, fazes o download da string, vês onde começa e onde acaba, e depois é sempre o mesmo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa parte já está resolvida.

Agora só preciso de saber como fazer download da página do router para o C:\, e está feito!

Ah vou incluir como forma de agradecimento o teu nick no programa ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora só preciso de saber como fazer download da página do router para o C:\, e está feito!

Podes fazer assim:

My.Computer.Network.DownloadFile("http://endereco.com/pagina.html", "c:\pagina.html")

Ah vou incluir como forma de agradecimento o teu nick no programa ;)

Não precisas ... mas se quiseres estás à vontade :thumbsup:

Bom trabalho!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Surgiu outra dúvida...

Algumas páginas do router pede password, ou seja quando acedo a página aparece uma caixa de dialogo para introduzir os dados...

Como posso contornar este problema, ou seja como posso "inejctar" os dados na caixa de dialogo?

Cumps

Mais uma vez Obrigado :(

PS: Não criei novo tópico porque o assunto é o mesmo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não resulta, porque a caixa de dialogo só aparece se abrir a pagina do router no browser, e eu queria evitar isso, queria que o programa enviasse o dados num modo "invisível"...

Já tentei com este código mas não dá, porque a caixa de dialogo deve ser em java ou assim...  :hmm:

           Dim Cliente As New System.Net.WebClient

            Dim Credencial As New NetworkCredential(TextBox1.Text, TextBox1.Text)



             Cliente.Credentials = Credencial



              Try

    Cliente.DownloadFile("http://***.***.*.***/cgi/b/dsl/dt/?ce=1&be=0&l0=1&l1=0", "c:/***.htm")

     aviso.text = ("Arquivo recebido com sucesso.")

  Catch ex As Exception

MsgBox(ex.Message)  & " - ")  & ex.Source)
End Try

Cliente.Dispose()

Dim wc1 As New System.Net.WebClient()

Dim cr As New Net.NetworkCredential("****", "************")  TextBox1.Text, TextBox2.Text)
wc1.Credentials = cr

wc1.DownloadFile("http://***.***.*.***/cgi/b/dsl/dt/?ce=1&be=0&l0=1&l1=0", "c:\***.htm")             
         

Sugestões?  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se uma imagem ajuda...

spthy6.jpg

Está ai a caixa de dialogo (Quando aberto no Firefox, etc), e a mensagem de erro que é retornada quando se põe a Password/User errado.

Eu queria que o programa enviasse os dados (Passowrd/User) sem que esta caixa de diálogo aparece-se e que fizesse o processo de obtenção de valores de SNR/Att, tal como acontece quando o router não tem password!

Faço-me entender ou nem por isso?  :bored:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tentas-te como se o computador escreve-se por ele próprio, carrega-se Enter sozinho, etc etc.?

Não sei é o tempo de processamento disso, logo não sei se apareceria...

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tentas-te como se o computador escreve-se por ele próprio, carrega-se Enter sozinho, etc etc.?

Não sei é o tempo de processamento disso, logo não sei se apareceria...

Cumps

Queria evitar isso, até porque assim mais vale ser o próprio user a escrever os dados do que o PC a fazer isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz o que o JPaulino disse. Com isso do sendkeys vais ter de fazer algo assim:

SendKeys.Send("Utilizador")
        SendKeys.Send("{tab}")
        SendKeys.Send("Password"~)
        SendKeys.Send("{tab}")
        SendKeys.Send("{enter}")

Porque tipo, isso do passar por trás não é assim tão fácil. Os meus conhecimentos sobre redes (não são muitos) levam-me a afirmar que para isso são precisas alterações ao nível de firmware do router. Quem realmente souber sobre isto que me corrija, mas olha, não subestimes esse pequeno código xD!

Ele é super poderoso. Nos meus tempos de habbo hotel (que caca) gamei muita gente com programas que tinham como base esse código, é quase instantâneo o utrilizador quase que não dá por nada. Vai por mim e tenta.

Espero ter-te sido útil :ipool:.

PS- Agora percebi o que queres realmente. Esqueçe o que disse sobre o router. Se quiseres mete cá o código que já tens, para tentar resolver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Arranjei maneira de aceder o router pelo DOS, usando o Telnet.

Basicamente o código só vai enviar os dados pelo DOS e recebe as mesmas pelo DOS.  :)

É muito mais simples e eficaz do que a maneira que queria fazer...  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora