Raspar Web usando VBA e MSXML2.XMLHTTP biblioteca

votos
0

Estou tentando desfazer os dados de um site usando MSXML2.XMLHTTP objeto no ambiente VBA (Excel) e eu não consigo descobrir como resolver este problema! O site é o seguinte:

http://www.detran.ms.gov.br/consulta-de-debitos/

Vocês podem usar os seguintes dados de teste para preencher o formulário:

  • Placa: oon5868
  • Renavam: 1021783231

Eu quero recuperar dados como chassi, com os dados acima que seria 9BD374121F5068077.

Eu não tenho problemas ao analisar o documento HTML, o difícil é realmente recebendo a informação como resposta! Código abaixo:

Sub SearchVehicle()

   Dim strPlaca As String
   Dim strRenavam As String

   strPlaca = oon5868
   strRenavam = 01021783231

   Dim oXmlPage As MSXML2.XMLHTTP60
   Dim strUrl As String
   Dim strPostData As String

   Set oXmlPage = New MSXML2.XMLHTTP60
   strUrl = http://www2.detran.ms.gov.br/detranet/nsite/veiculo/veiculos/retornooooveiculos.asp
   strPostData = placa= & strPlaca & &renavam= & strRenavam

   oXmlPage.Open POST, strUrl, False
   oXmlPage.setRequestHeader Content-Type, application/x-www-form-urlencoded
   oXmlPage.send strPostData

   Debug.Print oXmlPage.responseText

End Sub

O strURL utilizada no método POST ... / retornooooveiculos.asp é as ferramentas de desenvolvedor um google e violinista me mostrou que era o endereço correto do site estava postando a carga útil.

Quando acessado manualmente, o site recuperar as informações corretas, mas executando o meu código que eu sempre obter a seguinte resposta sobre a .responseText:

<html>Acesse: <b><a href='http://www.detran.ms.gov.br target='_parent'>www.detran.ms.gov.br</a></b></html>

AJUDA POR FAVOR, estou ficando louco tentando resolver esse quebra-cabeça! Por que eu redirecionado como este?

Eu preciso da informação CHASSI e não consegue encontrar a solicitação HTTP correta de fazer isso!

Publicado 13/05/2018 em 22:08
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Tente a abordagem abaixo. Deve buscar-lhe o conteúdo que você está depois. A coisa é que você precisa fornecer o Cookiecopiado de seus Request Headerscampos para que seu script para o trabalho que você pode encontrar usando devtools.

Sub SearchVehicle()
    Const URL As String = "http://www2.detran.ms.gov.br/detranet/nsite/veiculo/veiculos/retornooooveiculos.asp"
    Dim HTTP As New ServerXMLHTTP60, HTML As New HTMLDocument
    Dim elem As Object, splaca$, srenavam$, qsp$

   splaca = "oon5868"
   srenavam = "01021783231"

   qsp = "placa=" & splaca & "&renavam=" & srenavam

   With HTTP
    .Open "POST", URL, False
    .setRequestHeader "User-Agent", "Mozilla/5.0"
    .setRequestHeader "Cookie", "ISAWPLB{07D08995-E67C-4F44-91A1-F6A16337ECD6}={286E0BB1-C5F9-4439-A2CE-A7BE8C3955E0}; ASPSESSIONIDSCSDSCTB=AGDPOBEAAPJLLMKKIGPLBGMJ; 69137927=967930978"
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .send qsp
    HTML.body.innerHTML = .responseText
   End With

    For Each elem In HTML.getElementsByTagName("b")
        If InStr(elem.innerText, "Chassi:") > 0 Then MsgBox elem.ParentNode.NextSibling.innerText: Exit For
    Next elem
End Sub

Mais uma vez: preencher o Cookiecampo coletando-lo usando seus devtools (de Request Headersseção), se por algum motivo a minha fornecido Cookienão funciona para você. Obrigado.

Saída estou ficando:

9BD374121F5068077 
Respondeu 14/05/2018 em 08:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more