Como fazer carregamento e leitura de paginas web???
24/09/2008
0
Entao pessoal estou tentando fazer um Screen Scrapting de uma pagina web (acho q eh assim q fala)
estou usando o WebBrowser da seguinte maneira
o que estou tentando fazer e varias consultas em uma determinada pagina que tem um campo cpf e um botao de fazer a consulta (que vou chamar de pagina 1) que por sua vez faz um submit e me volta com o resultado (pagina 2) .
Atualmente estou usando o WebBrowser assim , eu tenho uma copia da pagina 1 (alterada aonde ao final do carregamento da pagina ele faz um submit automático ) localmente , faco alteração dela inserindo o cpf de forma sequencial e mando meu
webbrowser abri-la , ai quando ele completa o carregamento eu faco a leitura da pagina e armazeno os dados que eu quero.
Porem ele tem um comportamento anormal depois de algumas milhares de interações
Entao vi q poderia usar o HttpWebRequest e HttpWebResponse talvez tivesse algum ganho com eles ao inves de usar toda estrutura do webBrowser
So que como eu faco esse mesmo processo usando o HttpWebRequest , outra coisa tem como eu faria mandar um post para a pagina 2 com os dados do campo texto (cpf ) da pagina 1 ?
Obs: ele não passa o cpf por QueryString não.
Vlw pela ajuda.....
estou usando o WebBrowser da seguinte maneira
o que estou tentando fazer e varias consultas em uma determinada pagina que tem um campo cpf e um botao de fazer a consulta (que vou chamar de pagina 1) que por sua vez faz um submit e me volta com o resultado (pagina 2) .
Atualmente estou usando o WebBrowser assim , eu tenho uma copia da pagina 1 (alterada aonde ao final do carregamento da pagina ele faz um submit automático ) localmente , faco alteração dela inserindo o cpf de forma sequencial e mando meu
webbrowser abri-la , ai quando ele completa o carregamento eu faco a leitura da pagina e armazeno os dados que eu quero.
Porem ele tem um comportamento anormal depois de algumas milhares de interações
Entao vi q poderia usar o HttpWebRequest e HttpWebResponse talvez tivesse algum ganho com eles ao inves de usar toda estrutura do webBrowser
So que como eu faco esse mesmo processo usando o HttpWebRequest , outra coisa tem como eu faria mandar um post para a pagina 2 com os dados do campo texto (cpf ) da pagina 1 ?
Obs: ele não passa o cpf por QueryString não.
Vlw pela ajuda.....
Panarello
Curtir tópico
+ 0
Responder
Posts
24/09/2008
Panarello
Consegui resolver criei a seguinte classe , e vale resaltar que melhorou 1000¬ a performance
A função que faz a leitura da pagina , voce precisa passar o link da pagina com o Post junto no final.
Private Function leituraPaginaSemWebBrowser( ByVal pagina As String)
Dim myRequest As HttpWebRequest
Dim WebResp As HttpWebResponse
Dim Answer As StreamReader
´Dim newStream As Stream
Dim retorno As String
Dim cookie As String
Try
myRequest = WebRequest.Create(pagina)
myRequest.Method = ´POST´
myRequest.ContentType = ´application/x-www-form-urlencoded´
myRequest.AllowAutoRedirect = False
myRequest.ContentLength = 0
WebResp = myRequest.GetResponse()
Dim headers As WebHeaderCollection = WebResp.Headers
If (headers(´Set-Cookie´) <> Nothing) Then
cookie = headers(´Set-Cookie´)
End If
Answer = New StreamReader(WebResp.GetResponseStream())
retorno = Answer.ReadToEnd()
Return retorno
Catch ex As Exception
Return ´A PAGINA NAO PODE SER CARREGADA´
Finally
If Not Answer Is Nothing Then
Answer.Close()
End If
End Try
End Function
A função que faz a leitura da pagina , voce precisa passar o link da pagina com o Post junto no final.
Private Function leituraPaginaSemWebBrowser( ByVal pagina As String)
Dim myRequest As HttpWebRequest
Dim WebResp As HttpWebResponse
Dim Answer As StreamReader
´Dim newStream As Stream
Dim retorno As String
Dim cookie As String
Try
myRequest = WebRequest.Create(pagina)
myRequest.Method = ´POST´
myRequest.ContentType = ´application/x-www-form-urlencoded´
myRequest.AllowAutoRedirect = False
myRequest.ContentLength = 0
WebResp = myRequest.GetResponse()
Dim headers As WebHeaderCollection = WebResp.Headers
If (headers(´Set-Cookie´) <> Nothing) Then
cookie = headers(´Set-Cookie´)
End If
Answer = New StreamReader(WebResp.GetResponseStream())
retorno = Answer.ReadToEnd()
Return retorno
Catch ex As Exception
Return ´A PAGINA NAO PODE SER CARREGADA´
Finally
If Not Answer Is Nothing Then
Answer.Close()
End If
End Try
End Function
Responder
Clique aqui para fazer login e interagir na Comunidade :)