Jump to content

Obteniendo la temperatura de los próximos días


digitalboy

Recommended Posts

En esta ocasión vamos a extraer la temperatura de un portal de internet, de la siguiente página: openweathermap.org/city/3530597 que muestra la temperatura de los próximos días de la ciudad de México.

Para efectuar esta tarea haremos uso del objeto Internet Explorer para poder navegar a dicha página y una vez cargada la misma empezamos a realizar la extracción del texto correspondiente y lo vaciamos en las celdas de nuestro libro.

Antes que nada tendremos que agregar la referencia necesaria para trabajar con el navegador de la siguiente forma:


Sub Clima()
Dim oIE As InternetExplorer
Dim sContenido As String
Dim lPosicion As Long
Dim vContenido As Variant
Dim i As Integer

Set oIE = New InternetExplorer 'aqui se crea y se ejecuta una instancia del navegador

With oIE
.Visible = True 'con esta instruccion hacemos visible el navegador
.Navigate "http://openweathermap.org/city/3530597"

'esperamos hasta que se haya cargado la pagina en el navegador
While .ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend

sContenido = .Document.body.innertext 'se almacenatodo el texto desplegado por la pagina

'vemos que la cadena "next days" solo aparece una vez en el texto de la pagina y de ahi en adelante viene la
'temperatura de los dias siguiente...
lPosicion = InStr(1, sContenido, "Next Days", vbTextCompare) 'encontramos su posicion
sContenido = Mid(sContenido, lPosicion + Len("Next Days"), 1000) 'cortamos la cadena
vContenido = Split(sContenido, vbNewLine) 'spliteamos por linea de texto

'procesamos cada linea de texto, vemos que las lineas que nos interesan tienen una ma longitud menor a
'40 caracteres (a ojo de buen cubero)
For i = LBound(vContenido) To UBound(vContenido)
If Len(vContenido(i)) > 0 And Len(vContenido(i)) < 40 Then
Range("A65500").End(xlUp).Offset(1, 0) = vContenido(i) 'escribos la info en nuestra hoja de excel
End If
Next

.Quit 'cerramos el navegador para que no cnsuma memoria
MsgBox "Temperaturas extraidas con éxito", vbInformation
End With
End Sub

[/CODE]

El resto del articulo junto con la macro y codigo de ejemplo pueden descargaro de:

Web scraping – Obteniendo la temperatura de los próximos días

Saludos!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



  • Crear macros Excel

  • Posts

    • Gracias, Antoni! No encontraba nada por ahí. Funcionan todas las soluciones, aunque voy a desarrollar sobre esta, es la que he podido entender mejor para adaptarlo a lo mío y de momento genial. Gracias de nuevo!
    • Buenos días; Estoy intentado hacer lo siguiente y corregirme si es que no se puede, adelanto un poco el tema. He adjuntado una macro con dos hojas y sus correspondientes encabezados en la fila 1. -He configurado una macro que borra todos los datos de ambas hojas. -También he creado otra que copia los datos de la primera hoja y los pega a partir de la fila diez creo recordar. Lo que necesito conseguir es copiar los datos de las dos hojas en una variable antes de que los borre y si los he borrado por error con la macro recuperar que pegue los datos que se hayan almacenado en la variable en cada una de las hojas.   Igual lo que se pretende hacer no es posible "de momento"  y si es así me comentáis. Saludos y buen día para todos. MCopiarBorrar.xlsm
    • ¡Hola de nuevo! @GabrielRaigosa, la razón del SI.ERROR(... 1+ CONTARA) es por si el usuario coloca la última fecha (en el ejemplo de la tabla, es el 12/04/2021), donde al ser 100% no habrían fechas por debajo de ésta. Tu opción 2 genera error por este motivo. ¡Bendiciones!
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy