
objeto=Createobject("InternetExplorer.Application")
objeto.visible=.t.
ir_a="http://ww1.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias"
ObjTexto ='Cargando página .'
objeto.navigate2(ir_a)
Do While objeto.busy
Wait Window ObjTexto Time(0.3)
ObjTexto= ObjTexto+'.'
Enddo
WAIT clear
Alli va...*//////////////////////////////SET SAFETY OFF
LOCAL lcRUC AS String
lcRUC = "10210138132"
#DEFINE CRLF CHR(13)+CHR(10)
LOCAL oErr as Exception
LOCAL cStr as Character
LOCAL SW AS Boolean
SW = .T.
TRY
LOCAL loXmlHttp AS Microsoft.XMLHTTP,;
lcURL as String,;
lcHTML as String,;
lcTexto as String,;
lcFile as String
loXmlHttp = CREATEOBJECT("Microsoft.XMLHTTP")
lcURL = "http://www.sunat.gob.pe/w/wapS01Alias?ruc="+lcRUC
loXmlHttp.open("POST" , lcURL, .F.)
loXmlHttp.send
WAIT WINDOW "Espere por favor, obteniendo datos..." NOWAIT
DO While loXmlHttp.readyState<>4 OR loXmlHttp.status <>200
ENDDO
lcHTML = loXmlHttp.Responsetext
CATCH TO oErr
cStr = "Error:" + CRLF + CRLF + ;
"[ Error: ] " + STR(oErr.ErrorNo) + CRLF + ;
"[ Linea: ] " + STR(oErr.LineNo) + CRLF + ;
"[ Mensaje: ] " + oErr.Message + CRLF + ;
"[ Procedimiento: ] " + oErr.Procedure + CRLF + ;
"[ Detalles: ] " + oErr.Details + CRLF + ;
"[ StackLevel: ] " + STR(oErr.StackLevel) + CRLF + ;
"[ Instrucción: ] " + oErr.LineContents
MESSAGEBOX(cStr,4112,"Error...!!!")
SW = .F.
ENDTRY
IF SW = .F.
RETURN .F.
ENDIF
IF LEN(lcHTML) <= 630
MESSAGEBOX("El Número de Ruc ingresado es Inválido o no Existe.",64,"Aviso")
RELEASE loXmlHttp
RETURN .F.
ENDIF
lcTexto = CHRTRAN(ALLTRIM(lcHTML),CHR(10),"")
*/Para los delimitadores
lcTexto = STRTRAN(lcTexto, "Número Ruc. </b> " + lcRUC + " - ","RazonSocial:")
lcTexto = STRTRAN(lcTexto, "Estado.</b>","Estado:")
lcTexto = STRTRAN(lcTexto, "Agente Retención IGV.</strong>","ARIGV:")
lcTexto = STRTRAN(lcTexto, "Dirección.</b><br/>","Direccion:")
lcTexto = STRTRAN(lcTexto, "Situación.<b> ","Situacion:")
lcTexto = STRTRAN(lcTexto, "Teléfono(s).</b><br/>","Telefono:")
lcTexto = STRTRAN(lcTexto, "Dependencia.","Dependencia:")
lcTexto = STRTRAN(lcTexto, "Tipo.</b><br/> ","TipoPer:")
lcTexto = STRTRAN(lcTexto, "DNI</b> : ","DNI:")
lcTexto = STRTRAN(lcTexto, "Fecha Nacimiento.</b> ","FechNac:")
lcTexto = STRTRAN(lcTexto, SPACE(05),SPACE(01))
lcTexto = STRTRAN(lcTexto, SPACE(04),SPACE(01))
lcTexto = STRTRAN(lcTexto, SPACE(03),SPACE(01))
lcTexto = STRTRAN(lcTexto, SPACE(02),SPACE(01))
lcTexto = STRTRAN(lcTexto, SPACE(01) + CHR(13),SPACE(0))
lcTexto = STRTRAN(lcTexto, CHR(09),"")
*** RAZON SOCIAL ***
PosIni = AT("RazonSocial:", lcTexto)+12
PosFin = AT("<br/></small>", lcTexto)-(AT("RazonSocial:", lcTexto)+12)
lcRazSocial = SUBSTR(lcTexto,PosIni,PosFin)
lcRazSocial = STRTRAN(lcRazSocial ,"Ñ","Ñ")
lcRazSocial = STRTRAN(lcRazSocial , "Ñ", "Ñ")
lcRazSocial = STRTRAN(lcRazSocial , "Á", "Á")
lcRazSocial = STRTRAN(lcRazSocial , "É", "É")
lcRazSocial = STRTRAN(lcRazSocial , "Í", "Í")
lcRazSocial = STRTRAN(lcRazSocial , "Ó", "Ó")
lcRazSocial = STRTRAN(lcRazSocial , "Ú", "Ú")
lcRazSocial = STRTRAN(lcRazSocial , "Á", "Á")
lcRazSocial = STRTRAN(lcRazSocial , "É", "É")
lcRazSocial = STRTRAN(lcRazSocial , "Í", "Í")
lcRazSocial = STRTRAN(lcRazSocial , "Ó", "Ó")
lcRazSocial = STRTRAN(lcRazSocial , "Ú", "Ú")
lcFile= "Datos_Contribuyente.txt"
STRTOFILE(lcRazSocial +CHR(13)+CHR(10), lcFile)
*** ESTADO ***
PosIni = AT("Estado:", lcTexto)+7
PosFin = AT("</small><br/>", lcTexto)-(AT("Estado:", lcTexto)+7)
lcEst = SUBSTR(lcTexto,PosIni,PosFin)
STRTOFILE(lcEst+CHR(13)+CHR(10) , lcFile,1)
*** AGENTE RETENEDOR IGV ***
PosIni = AT("ARIGV:", lcTexto)+18
PosFin = AT("ARIGV:", lcTexto)+20-(AT("ARIGV:", lcTexto)+18)
lcAR = SUBSTR(lcTexto,PosIni,PosFin)
STRTOFILE(lcAR+CHR(13)+CHR(10), lcFile,1)
*** DIRECCION ***
PosIni = AT("Direccion:", lcTexto)+10
PosFin = AT("</b></small><br/>", lcTexto)-38-(AT("Direccion:", lcTexto)+10)
lcDir = SUBSTR(lcTexto,PosIni,PosFin)
lcDir = STRTRAN(lcDir, "Ñ", "Ñ")
lcDir = STRTRAN(lcDir, "Ñ", "Ñ")
lcDir = STRTRAN(lcDir, "Á", "Á")
lcDir = STRTRAN(lcDir, "É", "É")
lcDir = STRTRAN(lcDir, "Í", "Í")
lcDir = STRTRAN(lcDir, "Ó", "Ó")
lcDir = STRTRAN(lcDir, "Ú", "Ú")
lcDir = STRTRAN(lcDir, "Á", "Á")
lcDir = STRTRAN(lcDir, "É", "É")
lcDir = STRTRAN(lcDir, "Í", "Í")
lcDir = STRTRAN(lcDir, "Ó", "Ó")
lcDir = STRTRAN(lcDir, "Ú", "Ú")
STRTOFILE(lcDir+CHR(13)+CHR(10), lcFile,1)
*** SITUACION ***
PosIni = AT("Situacion:", lcTexto)+10
PosFin = AT("</b></small><br/>", lcTexto)-(AT("Situacion:", lcTexto)+10)
lcCond = SUBSTR(lcTexto,PosIni,PosFin)
STRTOFILE(lcCond+CHR(13)+CHR(10), lcFile,1)
*** TELEFONO ***
PosIni = AT("Telefono:", lcTexto)+9
PosFin = AT("Dependencia:", lcTexto)-25-(AT("Telefono:", lcTexto)+9)
lcTelef = SUBSTR(lcTexto,PosIni,PosFin)
STRTOFILE(lcTelef+CHR(13)+CHR(10), lcFile,1)
*** TIPO DE PERSONA ***
PosIni = AT("TipoPer:", lcTexto)+8
IF SUBSTR(lcRUC,1,2) = "10"
PosFin = AT("DNI:", lcTexto)-25-(AT("TipoPer:", lcTexto)+8)
ELSE
PosFin = RAT("</small><br/>", lcTexto, 3) - 16 - AT("TipoPer:", lcTexto)+8
ENDIF
lcTipoPer = SUBSTR(lcTexto,PosIni,PosFin)
STRTOFILE(lcTipoPer+CHR(13)+CHR(10), lcFile,1)
*** DNI ***
IF SUBSTR(lcRUC,1,2) = "10"
PosIni = AT("DNI:", lcTexto)+4
PosFin = AT("FechNac:", lcTexto)-25-(AT("DNI:", lcTexto)+4)
lcDNI = SUBSTR(lcTexto,PosIni,PosFin)
ELSE
lcDNI = "-"
ENDIF
STRTOFILE(lcDNI+CHR(13)+CHR(10), lcFile,1)
*** FECHA DE NACIMIENTO ***
IF SUBSTR(lcRUC,1,2) = "10"
PosIni = AT("FechNac:", lcTexto)+8
PosFin = AT("FechNac:", lcTexto)+18-(AT("FechNac:", lcTexto)+8)
ldFechNac = SUBSTR(lcTexto,PosIni,PosFin)
ELSE
ldFechNac = "-"
ENDIF
STRTOFILE(ldFechNac, lcFile,1)
MODIFY FILE (lcFile)
RELEASE loXmlHttp
RETURN
*/
Esto lo realice buscando información en el grupo; tomando cada tips como ejemplo de allí la idea, y arme lo que quería que haga.
Salu2ss...
Para leer los captcha deben descargar el aplicativo OCR, tesseract.exe no lo olviden..
| Atentamente, Manuel Zevallos B. 9-8860-1297 Entel http://www.solucionesmz.com |
El tesseract, es un aplicativo OCR, captura la imagen del captcha y saca sus dígitos en txt