Scraping: radicación de un auto en Argentin

 Este scraping permite buscar la radicacion del registro automotor de un vehículo en argentina mediante la patente.

librerias utilizadas

Django, requests.


*****************************************HTML*******************

<!DOCTYPE html>

<html>

<head>

    <meta name="viewport" content="width=device-width" />

    <title>Index</title>

    {% load static %}

    <link rel="stylesheet" type="text/css" href="{% static 'styles/general.css' %}" />

    <style>

        .cntpreview{

            background: #000;

    padding: 10px;

    width: 50%;

    min-height: 300px;

    color: #fff

        }

    </style>

</head>

<body>

    <div id="divLoading" class="wrap_loading hide">

        <div class="lds-ring">

            <div></div>

            <div></div>

            <div></div>

            <div></div>

        </div>

        <div class="loading_text">Procesando ...</div>

    </div>

    <div class="titulo">Consulta radicación de Registro Automotor por placa (Argentina)</div>

    <div class="fila">

        <input type="text" id="txtIdentificador" value="KNJ605,EOZ428,AH889DF"/>

       <button id="btnProcesar" class="boton">Procesar</button>

    </div>

    <div style="display: flex;justify-content: center;">    

        <pre id="txtPre" class="cntpreview"></pre>    

    </div>

    <div>

        {% csrf_token %}

    </div>

    <script src="{% static 'scripts/Demo45.js' %}" ></script>

</body>

</html>


*****************************************JAVASCRIPT*******************

window.onload=function(){

    let btnProcesar=document.getElementById("btnProcesar");

    btnProcesar.onclick=function(){

        let txtIdentificador=document.getElementById("txtIdentificador").value;

        let fd=new FormData();

        fd.append("data",txtIdentificador)

        servidor({url:"procesar",data:fd,responsetype:"json"}).then((data)=>{

            document.getElementById("txtPre").innerHTML=JSON.stringify(data,null,2);

        });

    }

}

function servidor({ metodo = "post", url = null, data = null, responsetype = "text" } = {}) {

    return new Promise((resolve, reject) => {

        let divLoading=document.getElementById("divLoading");

        if(divLoading){

            divLoading.classList.remove("hide");

        }

        let xhr = new XMLHttpRequest();

        xhr.open(metodo, url);

        var csrftoken=document.getElementsByName("csrfmiddlewaretoken")[0].value;

        xhr.setRequestHeader("X-CSRFToken", csrftoken);


        xhr.responseType = responsetype;

        xhr.onreadystatechange = function () {

            if (xhr.readyState == 4 && xhr.status == 200) {

                divLoading.classList.add("hide");

                resolve(xhr.response);

            }

        }

        xhr.onerror = function (e) {

            reject(e)

        }

        xhr.send(data);

    });

}


*****************************************PYTHON*******************

from django.shortcuts import render

from django.http.response import HttpResponse,JsonResponse

from django.conf import settings

import requests

import json

def index(request):

    return render(request,"Demo45.html")

def procesar(request):

    placa=request.POST.get("data")

    rptaJson={}

    print("buscar dni "+placa)

    try:

        

        header={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",

                "referer":"https://www.argentina.gob.ar/propiedadautomotor/consultar-radicacion-vehiculo"

                }

        sesion=requests.session()

        req=sesion.get("https://www.argentina.gob.ar/propiedadautomotor/consultar-radicacion-vehiculo",headers=header,verify=False)

        if req.status_code==200:

            html=req.text

            form_build_id=html.find("form_build_id")

            form_build_id=html.find("form_build_id",form_build_id+13)

            posValue=html.find("value=\"",form_build_id)

            poscomilla=html.find("\"",posValue+7)

            form_build_id=html[posValue+7:poscomilla]

            print(form_build_id)

            theme_token=html.find("theme_token")

            posValue=html.find("\"",theme_token+12)

            poscomilla=html.find("\"",posValue+1)

            theme_token=html[posValue+1:poscomilla]

            print(theme_token)

            jquery_version_token=html.find("jquery_version_token")

            posValue=html.find("\"",jquery_version_token+21)

            poscomilla=html.find("\"",posValue+1)

            jquery_version_token=html[posValue+1:poscomilla]

            print(jquery_version_token)

            header["accept"]="application/json, text/javascript, */*; q=0.0"

            header["origin"]="https://www.argentina.gob.ar"

            header["content-type"]="application/x-www-form-urlencoded; charset=UTF-8"

            header["x-requested-with"]="XMLHttpRequest"

            payload="patente="+placa+"&form_build_id="+form_build_id+"&form_id=consulta_radicacion_dominio&tarro_de_miel=&_triggering_element_name=op&_triggering_element_value=Consultalo&ajax_html_ids%5B%5D=twitter-wjs&ajax_html_ids%5B%5D=facebook-jssdk&ajax_html_ids%5B%5D=skip-link&ajax_html_ids%5B%5D=navbar-brand&ajax_html_ids%5B%5D=cd-login&ajax_html_ids%5B%5D=btn-mi-argentina&ajax_html_ids%5B%5D=apachesolr-search-custom-page-search-form&ajax_html_ids%5B%5D=edit-tarro-de-miel--2&ajax_html_ids%5B%5D=edit-keys&ajax_html_ids%5B%5D=edit-submit&ajax_html_ids%5B%5D=main-content&ajax_html_ids%5B%5D=block-system-main&ajax_html_ids%5B%5D=linkWA&ajax_html_ids%5B%5D=linkTG1&ajax_html_ids%5B%5D=consulta-radicacion-dominio&ajax_html_ids%5B%5D=contenedor&ajax_html_ids%5B%5D=edit-patente&ajax_html_ids%5B%5D=edit-envio-formulario&ajax_html_ids%5B%5D=edit-tarro-de-miel&ajax_html_ids%5B%5D=block-menu-menu-footer-1&ajax_html_ids%5B%5D=block-menu-menu-footer-2&ajax_html_ids%5B%5D=block-menu-menu-footer-3&ajax_html_ids%5B%5D=scrolltotop_parent&ajax_html_ids%5B%5D=scrolltotop_arrow&ajax_html_ids%5B%5D=&ajax_html_ids%5B%5D=&ajax_html_ids%5B%5D=&ajax_html_ids%5B%5D=&ajax_html_ids%5B%5D=rufous-sandbox&ajax_html_ids%5B%5D=fb-root&ajax_page_state%5Btheme%5D=argentinagobar_theme&ajax_page_state%5Btheme_token%5D="+theme_token+"&ajax_page_state%5Bcss%5D%5Bmodules%2Fsystem%2Fsystem.base.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_search%2Fcss%2Fsearch.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_webform%2Fcss%2Fcustom-chosen.css%5D=1&ajax_page_state%5Bcss%5D%5Bmodules%2Ffield%2Ftheme%2Ffield.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Ffield_hidden%2Ffield_hidden.css%5D=1&ajax_page_state%5Bcss%5D%5Bmodules%2Fnode%2Fnode.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fuser_prune%2Fcss%2Fuser_prune.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fviews%2Fcss%2Fviews.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fctools%2Fcss%2Fctools.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fdrupar_filtros%2Fcss%2Fgaleria.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjgm_subastas%2Fcss%2Faabe.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fpanels%2Fcss%2Fpanels.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Frate%2Frate.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_formularios%2Fcss%2FradicacionDominio.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_campana_gubernamental%2Fcss%2Fargentinagobar_campana_gubernamental.css%5D=1&ajax_page_state%5Bcss%5D%5Bhttps%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Ffont-awesome%2F4.7.0%2Fcss%2Ffont-awesome.css%5D=1&ajax_page_state%5Bcss%5D%5Bhttps%3A%2F%2Ffonts.googleapis.com%2Fcss2%3Ffamily%3DEncode%2BSans%3Awght%40100%3B200%3B300%3B400%3B500%3B600%3B700%3B800%3B900%26display%3Dswap%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fvendor%2Fbootstrap%2Fcss%2Fbootstrap.min.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fcss%2Ficono-arg.css%5D=1&ajax_page_state%5Bcss%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fcss%2Fponcho.min.css%5D=1&ajax_page_state%5Bjs%5D%5B0%5D=1&ajax_page_state%5Bjs%5D%5B1%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_search%2Fjs%2Fsolr_search.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fbootstrap%2Fjs%2Fbootstrap.js%5D=1&ajax_page_state%5Bjs%5D%5B%2Fprofiles%2Fargentinagobar%2Flibraries%2Fjquery.jquery-371%2Fjquery-3.7.1.min.js%5D=1&ajax_page_state%5Bjs%5D%5B%2Fprofiles%2Fargentinagobar%2Flibraries%2Fjquery.jquery-migrate%2Fjquery-migrate-3.5.2.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fjquery-extend-3.4.0.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fjquery-html-prefilter-3.5.0-backport.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fjquery.once.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fdrupal.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjquery_update%2Fjs%2Fjquery_browser.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjquery_update%2Freplace%2Fui%2Fexternal%2Fjquery.cookie.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjquery_update%2Freplace%2Fjquery.form%2F4%2Fjquery.form.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fform-single-submit.js%5D=1&ajax_page_state%5Bjs%5D%5Bmisc%2Fajax.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjquery_update%2Fjs%2Fjquery_update.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_areas%2Fjs%2FcolorFondoGrupoAtajos.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_tramites%2Fjs%2Fresize_media.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_usuarios%2Fjs%2FlimpiarCampo.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fentityreference%2Fjs%2Fentityreference.js%5D=1&ajax_page_state%5Bjs%5D%5Bpublic%3A%2F%2Flanguages%2Fes_-ItMtJilxuuiLFTCnmK_k5zP6zPqMXd_ji181zFXfvs.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fdrupar_filtros%2Fjs%2FmdBlank.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fdrupar_filtros%2Fjs%2Fgaleria.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fdrupar_filtros%2Fjs%2Fjquery.touchSwipe.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjgm_subastas%2Fjs%2Faabe.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_bloques%2Fjs%2Ffb-sdk.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_bloques%2Fjs%2Ftw.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_bloques%2Fjs%2Fwa.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fbootstrap%2Fjs%2Fmisc%2F_progress.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_formularios%2Fjs%2FonKeyPressEnterSubmitForm.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_campana_gubernamental%2Fjs%2Fargentinagobar_campana_gubernamental.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fargentinagobar%2Fargentinagobar_webform%2Fjs%2Fbutton.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fvuce_calendario%2Fjs%2Fbutton.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fvendor%2Fbootstrap%2Fjs%2Fbootstrap.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fjs%2Fscrolltotop.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fjs%2Fdatatables.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fjs%2Fintl.min.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fjs%2Fdevice-breadcrumb.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fponcho%2Fjs%2Fdevice-breadcrumb-listener.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fmodules%2Fcontrib%2Fjquery_update%2Fjs%2Fjquery_position.js%5D=1&ajax_page_state%5Bjs%5D%5Bprofiles%2Fargentinagobar%2Fthemes%2Fcontrib%2Fbootstrap%2Fjs%2Fmisc%2Fajax.js%5D=1&ajax_page_state%5Bjquery_version%5D=3.7.1&ajax_page_state%5Bjquery_version_token%5D="+jquery_version_token

            req=sesion.post("https://www.argentina.gob.ar/system/ajax",data=payload,headers=header,verify=False)


            if req.status_code==200:

                objrpta=req.json()

                html=objrpta[1]["data"]

                posdd=html.find("<dd>")

                posmenor=html.find("<",posdd+4)

                rptaJson["patente"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["tipovehiculo"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["registroseccional"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["direccion"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["localidad"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["codigopostal"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["provincia"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["horarioatencion"]=html[posdd+4:posmenor]

                posdd=html.find("<dd>",posmenor)

                posmenor=html.find("<",posdd+4)

                rptaJson["telefono"]=html[posdd+4:posmenor]


    except Exception as e:

        print("Error "+ str(e))

      

    return JsonResponse(rptaJson,safe=False)


    

Comentarios

Entradas populares de este blog

Web Scraping en Argentina: búsqueda de personas por DNI paso a paso

¡Mira Cómo Obtengo Datos de un Vehículo Solo con la Placa! (Web Scraping)

Bot whatsapp con whatsapp-web.js y nodejs