Imprimir página | Cerrar ventana

Obtención de datos de página web

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Otros Productos Microsoft
Descripción del foro: PowerPoint, Navision, Visio, FrontPage, InfoPath etc
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85109
Fecha de impresión: 19/Abril/2024 a las 06:47


Tema: Obtención de datos de página web
Publicado por: annuroic
Asunto: Obtención de datos de página web
Fecha de publicación: 31/Marzo/2020 a las 11:53
Estimados miembros del foro:
Mi nombre es Antonio Núñez, es la primera vez que entro a este foro, aunque os llevo siguiendo una larga temporada.

Estoy programando una base de datos en access 365. La base de datos tiene que tomar datos de una página web, que está estructurada con bloques <div>. El dato que me interesa está debajo de 5 niveles <div>, para poder capturarlo, estoy tratando de usar Microsoft Internet Controls , por medio de 

IE.Document.getElementByClassID("maincontent").getElementsByName("results")(1).getElementsByName("resultitem").getElementsByName("name")

debo estar haciendo algo rematadamente mal, ya que siempre me da el error 438 en tiempo de ejecución.

¿Alguién ha capturado datos de web mediante este módulo?
¿Conocéis otra manera de hacerlo?

Muchas gracias por la segura ayuda.
saludos.
Cuídense.

Antonio



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 01/Abril/2020 a las 01:08
Hola annuroic, bienvenido al foro.

Maneras hay varias, pero creo que lo mejor sería ver tu código y a partir de ahí sugerir posibles cambios, en lugar de partir de cero, que entre otras cosas, es más rápido.

Por cierto, sería también de ayuda si pones la web a la que te estás conectando para obtener los datos.

Un saludo.

Luis.


-------------
El Búho es un pajarraco


Publicado por: annuroic
Fecha de publicación: 01/Abril/2020 a las 08:13
Muchas gracias por responder.

El código que estoy usando es 

Private Sub Comando0_Click()
Dim IE As InternetExplorer 'Reference to Microsoft Internet Controls
    Set IE = New InternetExplorer
    
    With IE
        .Visible = True
        .Navigate2 "www.abctelefonos.com\indice_espana\huelva\cartaya\pag_54"

        
        'we add a loop to be sure the website is loaded and ready.
        'Does not work consistently. Cannot be relied upon.
        Do While .Busy = True Or .ReadyState <> READYSTATE_COMPLETE 'Equivalent = .ReadyState <> 4
            ' DoEvents - worth considering. Know implications before you use it.
            'Application.Wait (Now + TimeValue("00:00:01")) 'Wait 1 second, then check again.
        Loop
               'Print info in immediate window
        With .Document 'the source code HTML "below" the displayed page.
            'Stop 'VBE Stop. Continue line by line to see what happens.
        Dim cadena As String
        cadena = IE.Document.getElementByClassID("maincontent").getElementsByName("results")(1).getElementsByName("resultitem").getElementsByName("name")
        
        .Quit 'close the application window
        End With
    End With
End Sub


Siempre obtengo el mismo resultado:
error 438

He acabado haciendo combinaciones de las instruccciones de toda las maneras que se me ha ocurrido, pero nada de nada.

Muchas gracias por tu ayuda.

Quería probar cosas nuevas, salir de lo de siempre, pero vaya si me atollado!!!



Imprimir página | Cerrar ventana