Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

CarlosKurt

Extracción de información de pagina web 3

Recommended Posts

Hola a todos. De antemano darles las gracias por su tiempo en colaborarme en este siguiente asunto.

Al ingresar a la siguiente pagina web:

https://www.universidadperu.com/empresas/

Se buscara el RUC (Registro Único del Contribuyente) ejemplo: 20525210686.

La página cargara y visualizara datos de la empresa. El cual se requiere la siguiente información.

-Razon Social

-Pagina Web

-Otras Webs Asociadas (En caso hubiese)

-Nombre Comercial

-Tipo Empresa

-Condición

-Fecha Inicio Actividades

-CIIU

-Dirección Legal

-Urbanización

-Distrito / Ciudad

-Provincia (En caso hubiese)

-Departamento

-Teléfonos (En caso hubiese)

-Representantes Legales (Solo en caso hubiese/Todos los representantes)

Cada información tiene que ser copiada y pegada en la planilla que envió como prueba. 

En caso la pagina web no encuentre datos solo colorear el la celda del RUC en excel.

Saludos.

 

Prueba Importadoras.xls

Share this post


Link to post
Share on other sites

Buenas @CarlosKurt

Veamos lo que debes de realizar es analizar el código fuente de la pagina web, para obtener los names, classname o los ids de los objetos que contienen la información y luego usar  WINHTTP.WinHTTPRequest.5.1 para obtener la pagina web y HTMLFile para obtener los objetos y extraer la información.

Por ejemplo para sacar la dirección de Web de la empresa

Sub GetAllElementsWeb()
    Dim sUr     As String
    Dim doc     As Object
    Dim div     As Object
    Dim sElm    As String
    sUr = "https://www.universidadperu.com/empresas/busqueda/20333266025"
    Set doc = myConnection(sUr)
    Set div = doc.getElementById("middlecolumnhome")
    sElm = GetValuesDivsInfo(div)
    MsgBox sElm
End Sub
Private Function myConnection(strUr As String) As Object
    Dim oHtml As Object
    Set oHtml = CreateObject("HTMLFile")
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", strUr, False
        .send
        oHtml.write (.responseText)
    End With
    Set myConnection = oHtml
End Function
Private Function GetValuesDivsInfo(oHtml As Object) As String
    Dim lis As Object
    Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(2).getElementsByTagName("a")
    GetValuesDivsInfo = lis(0).innerText
End Function

 

Bien lo dicho primero lee el código fuente de la pagina web para ver quien contiene los datos.

Por otra parte te comento sobre la consulta

Extraer información web con captcha

Si se puede realizar, al menos yo lo realice pero usando vbNet y/o C#, incluso ya realice uno para la propia pagina que comentas aduanet

Un saludo

Share this post


Link to post
Share on other sites
Hace 11 horas, logroastur dijo:

Buenas @CarlosKurt

Veamos lo que debes de realizar es analizar el código fuente de la pagina web, para obtener los names, classname o los ids de los objetos que contienen la información y luego usar  WINHTTP.WinHTTPRequest.5.1 para obtener la pagina web y HTMLFile para obtener los objetos y extraer la información.

Por ejemplo para sacar la dirección de Web de la empresa


Sub GetAllElementsWeb()
    Dim sUr     As String
    Dim doc     As Object
    Dim div     As Object
    Dim sElm    As String
    sUr = "https://www.universidadperu.com/empresas/busqueda/20333266025"
    Set doc = myConnection(sUr)
    Set div = doc.getElementById("middlecolumnhome")
    sElm = GetValuesDivsInfo(div)
    MsgBox sElm
End Sub
Private Function myConnection(strUr As String) As Object
    Dim oHtml As Object
    Set oHtml = CreateObject("HTMLFile")
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", strUr, False
        .send
        oHtml.write (.responseText)
    End With
    Set myConnection = oHtml
End Function
Private Function GetValuesDivsInfo(oHtml As Object) As String
    Dim lis As Object
    Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(2).getElementsByTagName("a")
    GetValuesDivsInfo = lis(0).innerText
End Function

 

Bien lo dicho primero lee el código fuente de la pagina web para ver quien contiene los datos.

Por otra parte te comento sobre la consulta

Extraer información web con captcha

Si se puede realizar, al menos yo lo realice pero usando vbNet y/o C#, incluso ya realice uno para la propia pagina que comentas aduanet

Un saludo

Gracias por responder @logroastur. No soy muy conocedor de utilizar este tipo de códigos. Aun así he intentado muchas formas para extraer información usando el código que me enviastes. Sin embargo no he podido dar con la extracción de información. Según tu explicación es modificar la parte final.

    Set lis = oHtml.getElementsByTagName("div")("http://schema.org/LocalBusiness").getElementsByTagName("ul")(0).getElementsByTagName("li")("RUC:").getElementsByTagName("a")

No me ha dado resultado. Por favor solo me podrías explicar un solo ejemplo.

Saludos. 

 

Share this post


Link to post
Share on other sites

Buenas @CarlosKurt

Veamos es que los valores que muestras no son correctos

Veamos si me explico

1º debes de abrir la pagina web y luego sobre ella botón derecho y seleccionar ver y se abrirá el código fuente de ella por ejemplo  en tu navegador inserta

view-source:https://www.universidadperu.com/empresas/radio-panamericana.php

2º buscas en ella el RUC que se encorar en

Cita

<div itemscope itemtype="http://schema.org/LocalBusiness"><ul><li><b>RUC:</b> 20333266025</li>

Bien encontrado veras que la información esta

a) en un li al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que será li(0)

B)el li esta incluido en ul al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que será sera ul(0)

c) el ul esta incuido en div al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que se busca objetos que no esten cerrados

d) bien la linea anterior posee

Cita

<div class="cc"><ins class="adsbygoogle ads336" data-ad-channel="6079791898"  data-ad-client="ca-pub-9703374939060795" data-ad-slot="7923240122"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div>

en ella hay div, ins y script. pero todos están cerrados, pues poseen la linea </ y nombre del objeto por lo que se debe de subir a la siguiente linea

Cita

<h1>Radio Panamericana S. A. | Radio Panamericana</h1>

la cual también esta cerrado el objeto. seguimos subiendo

Cita

<p><a href='https://www.universidadperu.com/empresas/'>InfoEmpresa</a> >>> Radio Panamericana S. A. | Radio Panamericana&nbsp;&nbsp;&nbsp;<span class="fb-like" data-href="https://www.universidadperu.com/empresas/radio-panamericana.php" data-width="170" data-layout="button" data-action="like" data-share="false" data-show-faces="false"></span></p>

Bien esta todos los objetos estan cerrados, seguimos subiendo

Cita

<div id="bodycontainer"><div id="middlecolumnhome" class="clr fl jj"><!-- google_ad_section_start -->

Bien en esta linea si hay objetos abiertos y no cerrados, es decir  le objeto

Cita

<div id="middlecolumnhome" class="clr fl jj"><!-- google_ad_section_start -->

es el que posee los  objetos  que poseen los datos, y como si posee id lo que se debe de usar es middlecolumnhome y para seleccionar el div que posee ul sera div(1) puesto que es el segundo recuerda que entre el de la linea que posee middlecolumnhome y div que posee ul hay dos divs y como el contador se inicia en cero sera 1

en resumas el código para seleccionar los datos se deberá de usar

Cita

doc.getElementById("middlecolumnhome").getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(0).innerText

Bien espero que te sea de utilidad

Un saludo

Share this post


Link to post
Share on other sites
En 10/7/2017 at 15:52 , logroastur dijo:

Buenas @CarlosKurt

Veamos es que los valores que muestras no son correctos

Veamos si me explico

1º debes de abrir la pagina web y luego sobre ella botón derecho y seleccionar ver y se abrirá el código fuente de ella por ejemplo  en tu navegador inserta

view-source:https://www.universidadperu.com/empresas/radio-panamericana.php

2º buscas en ella el RUC que se encorar en

Bien encontrado veras que la información esta

a) en un li al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que será li(0)

B)el li esta incluido en ul al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que será sera ul(0)

c) el ul esta incuido en div al no poseer ni class, name y id se debe de indicar la posición dentro del que lo tiene por lo que se busca objetos que no esten cerrados

d) bien la linea anterior posee

en ella hay div, ins y script. pero todos están cerrados, pues poseen la linea </ y nombre del objeto por lo que se debe de subir a la siguiente linea

la cual también esta cerrado el objeto. seguimos subiendo

Bien esta todos los objetos estan cerrados, seguimos subiendo

Bien en esta linea si hay objetos abiertos y no cerrados, es decir  le objeto

es el que posee los  objetos  que poseen los datos, y como si posee id lo que se debe de usar es middlecolumnhome y para seleccionar el div que posee ul sera div(1) puesto que es el segundo recuerda que entre el de la linea que posee middlecolumnhome y div que posee ul hay dos divs y como el contador se inicia en cero sera 1

en resumas el código para seleccionar los datos se deberá de usar

Bien espero que te sea de utilidad

Un saludo

Gracias @logroastur por responder. Por motivos de tiempo acabo de ver su mensaje.Lo revisare y te comento

Saludos

Share this post


Link to post
Share on other sites

Hola @logroastur. Su explicación me sirvió para entender un poco más sobre como extraer texto de una pagina web.

Agradecido por esto que me ayuda a comprender un poco a la hora de leer mas sobre el tema.

Sin embargo al aplicar las siguientes lineas.

Private Function GetValuesDivsInfo(oHtml As Object) As String Dim lis As Object

Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(0).getElementsByTagName("b")

GetValuesDivsInfo = lis(0).innerText

End Function

Se obtiene como resultado tan solo "RUC:" sin dar los números del RUC.

Se intento realizar lo siguiente. 

Private Function GetValuesDivsInfo(oHtml As Object) As String
    Dim lis As Object
    Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(0)
    GetValuesDivsInfo = lis(0).innerText
End Function

Mismo que anterior pero sin indicar el getElementsByTagName("b") y Vba  indica que se necesita depurar la siguiente linea.

GetValuesDivsInfo = lis(0).innerText

En su primera respuesta al aplicar la siguiente linea.

En 9/7/2017 at 21:16 , CarlosKurt dijo:

Private Function GetValuesDivsInfo(oHtml As Object) As String

Dim lis As Object Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(2).getElementsByTagName("a")

GetValuesDivsInfo = lis(0).innerText End Function

El resultado muestra la pagina web "http://www.radiopanamericana.com.pe"; supongo porque la sentencia getElementsByTagName("a") en la sgte linea:

En 9/7/2017 at 10:05 , logroastur dijo:

Set lis = oHtml.getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(2).getElementsByTagName("a")

Requiere de tal requisito.

He actuado como adivinador probando varias formas pero no he dado en ninguna en extraer los datos de RUC, Razon Social, etc.

Tambien he aplicado lo sugerido por usted en su ultima respuesta

En 10/7/2017 at 15:52 , logroastur dijo:

doc.getElementById("middlecolumnhome").getElementsByTagName("div")(1).getElementsByTagName("ul")(0).getElementsByTagName("li")(0).innerText

Que vendria hacer lo mismo que lo que expuse en el inicio de este ultimo mensaje. Borrando el doc.getElementById("middlecolumnhome") y no he encontrado resultado.

Obviamente algo hago mal.

¿Alguna pagina web en donde pueda entender algo mejor sobre el tema?

Saludos.

Share this post


Link to post
Share on other sites
Guest Cacho R

Hola! Carlos (y @logroastur)

Extrañamente obtengo un aviso de mi antivirus al pretender acceder al archivo de Logro.

Por ello y hasta tanto se solucione "eso" (nunca me había pasado) te muestro otra alternativa en la misma línea de extracción de datos.

Saludos, Cacho R.

P.D.

Saludos a "La Sil".

Importadoras.xlsm

Share this post


Link to post
Share on other sites

Buenas @Cacho R

Siento indicarte que no es correcto, el archivo no posee ningún virus, ni cosa rara

Reportes de https://www.virustotal.com/

Del archivo Zip

Cita

SHA256:     ee8e9b27d439c35a5d119f449a0eff48c3f1e0a5fd9644c4b054ddbecb497a61
Nombre:     Consulta.zip
Detecciones:     0 / 59
Fecha de análisis:     2017-07-18 10:27:25 UTC ( hace 0 minutos )

Link para ver el reporte completo

Reporte virustotal - Consulta.zip

Captura de pantalla

LimpioVirus1.thumb.gif.6ec8f02fd996e3780edc728608322d6e.gif

Reporte del excel

Cita

SHA256:     e4e3ccf0cacea8bbc51c2bdf80fb836afa79a177d68bb5d64bff781de27ff2e1
Nombre:     Consulta.xls
Detecciones:     0 / 55
Fecha de análisis:     2017-07-18 10:32:43 UTC ( hace 1 minuto )

Link para ver el reporte completo

Reporte virustotal - Consulta.xls

Captura de pantalla

LimpioVirus2.thumb.gif.6f25729a314d1dba5cf844252f998db8.gif

Bien @Cacho R como ves no es correcto, y como comentario antes de dar algo como real se debe de verificar, pues aunque no lo parezca el comentario que realizaste  escomo si yo deseo que se infecte algún usuario y esto no es verdad por lo que solicito que rectifiques tu comentario

Un saludo

 

Share this post


Link to post
Share on other sites

Buenas @Cacho R

Y para terminar los links de descarga tampoco poseen virus alguno

Reporte Link Consulta Link 1

Cita

URL:    http://www.linkbucks.com/Awis2
Detecciones:     0 / 65
Fecha de análisis:     2017-07-18 11:10:22 UTC ( hace 0 minutos )

Link Reporte

Link Reporte virustotal Consulta Link1

Captura de pantalla

LimpioVirus3.thumb.gif.07437251aaef73b249360f93ae64391a.gif

Reporte Reporte virustotal - Link2

Cita

URL:    http://casualient.com/FHX
Detecciones:     0 / 63
Fecha de análisis:     2017-07-18 11:13:50 UTC ( hace 2 minutos )

 

Link Reporte virus Consulta Link2

 

Captura de pantalla

LimpioVirus4.thumb.gif.4dc7364d30a856bdaedf7e9431e8f52c.gif

 

Bien lo dicho anteriormente, espero tus( @Cacho R ) comentarios

 

Un saludo

Share this post


Link to post
Share on other sites
Guest Cacho R
Hace 1 hora, logroastur dijo:

... aunque no lo parezca el comentario que realizaste  es como si yo deseo que se infecte algún usuario y esto no es verdad por lo que solicito que rectifiques tu comentario.

Mira, Logro: no sabría como "rectificar" un informe técnico -obviamente verificado- que me indica reiteradamente que "algo" raro pasa.

Ahora bien: ¿sabes de que forma sencilla se aclararía todo?... Pues subiendo tu archivo a este Foro en lugar de brindar enlaces externos al mismo. Tengo la sensación -a la luz de las evaluaciones que has realizado- que lo que estaría detectando mi antivirus sería "algo" (¿alguna de sus publicidades?) de la página de descarga que has utilizado.

Lamento entonces que "te hayas acelerado antes de encender el motor" (como decimos por mi barrio), pero te hago notar que mis expresas afirmaciones: a) - "Extrañamente", y b ) - "nunca me había pasado" pretendieron despejar -anticipadamente- cualquier intencionalidad aviesa de tu parte.

Vuelvo a lamentar que se haya alterado tu "pax" por algo que mal interpretaste y me gustaría que subieses -finalmente- tu propuesta a este Foro, que es la manera indiscutible de brindar tranquilidad a los que somos usuarios del mismo: ¿No te parece, Logro?...

Te mando un saludo.

Share this post


Link to post
Share on other sites
Guest Cacho R

Y... ¡Por cierto, Logro!...

Te agradezco que me hayas hecho conocer el servicio https://www.virustotal.com : ¡Parece una herramienta en línea interesante!

Fíjate que el servicio no chequea mediante Avast (que es uno de los antivirus que yo utilizo) y eso explica claramente el por qué de mi precaución y alarma.

Aquí el resumen: http://bit.ly/2u5tFOI

Además he notado que ese servicio en línea no siempre utiliza las mismas herramientas pues SÍ utiliza Avast para archivos individuales...

¡En fin!... Seguiré evaluando.

Share this post


Link to post
Share on other sites

Buenas @Cacho R

Sin ganas de perder el tiempo en "discusiones de peces", cosa aparte de que no inicie la "discusión", solo te indico que antes de "lanzar" (y lo dejo entrecomillas) un comentario de que es un posible virus, te reitero que lo lógico es que se medio verifique dentro de posible, por una sencilla razón, lo que se lanza en las redes(y al fin y acabo estos es una red) la mitad de la gente se lo toma al pie de la letra sin contrastar, "a si salen el noventa de los bulos que existen en internet". al menos eso me parece.

Bien en cuanto a subir el archivo al servidor del foro, es un punto aparte,  y por el momento solo lo realizo cuando los archivos son totalmente creados por mi y si se visualiza el gif se vera que no hay problema alguno para realizar la descarga.

Bien como lo que estamos quitar importancia a la consulta, lo dicho por mi parte cierro el punto de la "discusión" puesto lo que importa es la consula

Un saludo

Share this post


Link to post
Share on other sites
Guest Cacho R
Hace 10 minutos , logroastur dijo:

... cierro el punto de la "discusión" puesto lo que importa es la consulta.

Un error de interpretación lo tiene cualquiera y eso -ciertamente- no constituye una "discusión", pierde cuidado.
De modo que coincido en que lo valioso es que el consultante tenga varias soluciones/propuestas a mano.

Otro saludo.

Share this post


Link to post
Share on other sites
Guest Cacho R
Hace 5 horas, Silvia dijo:

o a lo mejor en mi caso tiene algo que ver, que tengo instalado el abdlock ¿?:huh:

¡Qué lástima que aún no hemos podido apreciar el -seguramente- interesante aporte de Logro!

Te comento, Silvia, que yo no tengo instalado ese complemento (abdlock) y sin embargo -también- me sobresalté con el mensaje: - "Malicious Websites"... aunque me lo dice en español.

Así que no cabe otra cosa que preguntarse: ¿Para qué generar una preocupación innecesaria cuando los servidores de este Foro recepcionan con gusto cualquier clase de aporte útil?... En fin: ¡Dejémoslo así!

Share this post


Link to post
Share on other sites
En 17/7/2017 at 13:05 , logroastur dijo:

Buenas @CarlosKurt

Chequea archivo

Extraer información Web

Para realizar la descarga chequea gif

Gif Proceso Descarga

Un saludo

 

Hola @logroastur. Gracias por su tiempo en colaborar con mis tareas de trabajo. Sin embargo el navegador Opera notifica un mensaje en el que no es seguro la pagina. Intente por segunda vez mostrando solo publicidad, la tercera y cuarta vez muestra pagina en blanco.

Saludos.

Share this post


Link to post
Share on other sites
En 18/7/2017 at 0:41 , Cacho R dijo:

Hola! Carlos (y @logroastur)

Extrañamente obtengo un aviso de mi antivirus al pretender acceder al archivo de Logro.

Por ello y hasta tanto se solucione "eso" (nunca me había pasado) te muestro otra alternativa en la misma línea de extracción de datos.

Saludos, Cacho R.

P.D.

Saludos a "La Sil".

Importadoras.xlsm

Hola @Cacho R. Gracias por la planilla que enviastes. Me sirve a la perfección. Siento envidia sana de como ustedes pueden hacerlo algo que para mí es complejo para ustedes quizás sencillo. ¿Alguna página web especifica en el que pueda aprender mas sobre Vba Excel y Codigo Fuente (de Paginas Web) para aprender?

Dicho lo anterior doy por terminado el tema.

Saludos a todos.

Share this post


Link to post
Share on other sites
Hace 21 horas, logroastur dijo:

Nuevamente agradecido por su aporte. La planilla es perfecta. Es invaluable lo que hacen ustedes a personas con poco conocimiento en Vba Excel. Sin embargo, pidiendo disculpas del caso, no me hice entender adecuadamente (tipico de un usuario como yo y como consecuencia a los programadores como ustedes se sienten agobiados). En sí la extracción tendria que hacerse masivamente colocando todos los RUC necesarios para extraer la informacion masivamente.

Saludos.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png