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
Publicar un comentario