none
logar em site (usuario e senha) depois capturar codigo fonte html com visual basic 2008 ????

    Question

  • Pessoal,

    Preciso capturar dados do usuario para poder manipular em meu programa.

    O problema : 

    Nao terei acesso ao banco de dados aonde esses dados estao armazenados.

    A possivel soluçao : 

    logar no site( por meio de minha aplicaça) com o usuario e senha que serao fornecidas pelo usuario,logo apos eu capturo os dados pelo codigo fonte html.

     

    Logo,tenho dois problemas : 

     

    * como logar no site por meio de minha aplicaçao ,sem abrir a pagina,usando somente minha aplicaçao?

    * como capturar o codigo fonte da pagina que sera mostrada apos a pagina de login?

     

     

    Desde ja agradeço a todos voces e desejo-lhes  um feliz e bem sucedido ao novo!!!

    Tuesday, December 27, 2011 8:24 PM

Answers

  • Victor,

    Conheço um método, porém, você precisa saber qual o número desse elemento na página ou usar um For com algum outro elemento como 'class' ou 'id', etc..

    Vamos supor que o INPUT do campo Login tenha name = 'login' e do campo Senha, seja 'senha' mesmo, e o botão seja name = 'submit':

    1º Você cria o componente WebBrowser1 e seta o valor da Tag dele para 0. Em seguida manda carregar a página de Login [ WebBrowser1.Navigate("http://pagina/login.asp") ]

        Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
                If WebBrowser1.Tag = 0 Then
                    For i = 0 To WebBrowser1.Document.GetElementsByTagName("input").Count - 1 ' Criei um For, sendo o limite o toal de inputs na página
                        If WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "usuario" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).SetAttribute("value", "USUARUI_AQUI")
                        ElseIf WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "senha" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).SetAttribute("value", "SENHA_AQUI")
                        ElseIf WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "submit" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).InvokeMember("Click")
                        End If
                    Next
                ElseIf WebBrowser1.Tag = 1 Then
                    For i = 0 To WebBrowser1.Document.GetElementsByTagName("p").Count - 1
                        If WebBrowser1.Document.GetElementsByTagName("p").Item(i).GetAttribute("classname") = "conteudo" Then ' classname, deve ser usado no caso de Class no HTML.
                            MsgBox(WebBrowser1.Document.GetElementsByTagName("p").Item(i).InnerHtml) ' Dese modo você vai ter uma MessageBox com o conteudo HTML de <P class="conteudo">###CONTEUDO QUE VC QUER PEGAR###</P>
                        End If
                    Next
                End If
            End If
            WebBrowser1.Tag += 1
        End Sub
    

    Lembrando que é apenas um exemplo.

    Wednesday, December 28, 2011 12:00 AM

All replies

  • Victor,

    Conheço um método, porém, você precisa saber qual o número desse elemento na página ou usar um For com algum outro elemento como 'class' ou 'id', etc..

    Vamos supor que o INPUT do campo Login tenha name = 'login' e do campo Senha, seja 'senha' mesmo, e o botão seja name = 'submit':

    1º Você cria o componente WebBrowser1 e seta o valor da Tag dele para 0. Em seguida manda carregar a página de Login [ WebBrowser1.Navigate("http://pagina/login.asp") ]

        Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
                If WebBrowser1.Tag = 0 Then
                    For i = 0 To WebBrowser1.Document.GetElementsByTagName("input").Count - 1 ' Criei um For, sendo o limite o toal de inputs na página
                        If WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "usuario" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).SetAttribute("value", "USUARUI_AQUI")
                        ElseIf WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "senha" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).SetAttribute("value", "SENHA_AQUI")
                        ElseIf WebBrowser1.Document.GetElementsByTagName("input").Item(i).GetAttribute("name") = "submit" Then
                            WebBrowser1.Document.GetElementsByTagName("input").Item(i).InvokeMember("Click")
                        End If
                    Next
                ElseIf WebBrowser1.Tag = 1 Then
                    For i = 0 To WebBrowser1.Document.GetElementsByTagName("p").Count - 1
                        If WebBrowser1.Document.GetElementsByTagName("p").Item(i).GetAttribute("classname") = "conteudo" Then ' classname, deve ser usado no caso de Class no HTML.
                            MsgBox(WebBrowser1.Document.GetElementsByTagName("p").Item(i).InnerHtml) ' Dese modo você vai ter uma MessageBox com o conteudo HTML de <P class="conteudo">###CONTEUDO QUE VC QUER PEGAR###</P>
                        End If
                    Next
                End If
            End If
            WebBrowser1.Tag += 1
        End Sub
    

    Lembrando que é apenas um exemplo.

    Wednesday, December 28, 2011 12:00 AM
  • Muitoo obrigado luan!!!! logo que puder eu vou testar o codigo e aviso o resultado!
    Wednesday, December 28, 2011 5:28 PM