Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Estadisticas Mundiales del Coronavirus Web Scraping Raspado Web con Explorer en VBA #1017

web scraping con Internet Explorer Raspado Web en Excel

WEB SCRAPING CON INTERNET EXPLORER

En este muestra como realizar web scraping o raspado web utilizando Internet Explorer, si bien existe otro método más rápido y fiable como vimos en el ejemplo donde se extraen las cotizaciones de las acciones, se puede usar cuando se extraen pocos datos o simplemente si nos sentimos mejor usando este método.

Requieres aprender a manejar Excel, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los ❤️MEJORES CURSOS DE EXCEL ON LINE ❤️ que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

WEB SCRAPING A PAGINA DE ESTADISTICAS MUNDIALES CORONAVIRUS

El este ejemplo se muestra como se obtienen datos de las estadísticas mundiales de coronavirus, presionando un botón en Excel se conecta a la página https://www.worldometers.info/coronavirus/ y obtiene los datos actuales sobre casos de coronavirus, en el ejemplo Estadisticas Mundiales del Coronavirus – Web Scraping – Raspado Web Parte1 se muestra como se realizó el ejemplo en forma integral, ya que este ejemplo contiene macros para modificar Ribbon, Ordenar, Crear Gráficos, Imprimir, etc. etc. es un ejemplo integral donde se puede ver el funcionamiento de muchas macros, lo cual se explica en es ejemplo y los subsiguientes en cuyo playlist de YouTube podrás observar en caso que te interese alguna programación de dicho ejemplo.

En el presente ejemplo solo se explica como extraer los datos de la web mencionada a Excel al presionar el botón actualizar «actualizar estadística» que está en el menú personalizado en la barra de Ribbon o Menú de Excel.

Para probar su funcionamiento debes descargar el archivo rar que contiene la macro y la base de datos en Access, recordemos que los datos se guardan en Access y desde Excel solamente se consultan y muestran, la descarga del fichero de ejemplo la podrás hacer desde el final del post.

Explicación del código de la macro para hacer WEB SCRAPING A PAGINA DE ESTADISTICAS MUNDIALES DE COVID 19

Al presionar el botón actualizar se ejecuta la macro que extrae los datos de la web de estadísticas mundiales nombradas en el párrafo anterior.

En primero lugar se elimina la hoja Actualizar que crea cada vez que se realiza el raspado web para obtener datos de la página de estadísticas mencionada, se recorre todas las hojas del libro en busca de la hoja llamada «Actualizar» una vez encontrada la elimina, esto es para borrar todo dato que pudiera contener, con el siguiente código:

For Each she In Worksheets
mys = she.Name
If she.Name = «Actualizar» Then she.Delete
Next

Luego se inserta una hoja en Excel y se le otorga el nombre «Actualizar» que es donde se pegarán los datos que se obtienen del raspado web o web sraping, así:


ActiveWorkbook.Sheets.Add AFTER:=Worksheets(Worksheets.Count)
ActiveSheet.Name = «Actualizar»

Luego se crea y abre el objeto Internet Explorer, que no es otra cosa que el navegador Web, así

Set IE = CreateObject(«InternetExplorer.Application»)

Luego con dicho objeto se navega hasta la página de Estatidisticas mundiales  https://www.worldometers.info, haciendo visible el navegador en caso de establecerlo en «Visible= True» o no visible si se establece en «Visible =False»; con el siguiente código:

 
With IE
.navigate «https://www.worldometers.info/coronavirus/»
‘ .Visible = True


Se espera que se cargue la página, así:

Do While .readyState <> 4 ‘READYSTATE_COMPLETE
DoEvents
Loop

Cargada toda la página se seleccionan todos los datos y se espera unos segundos para que la macro continúe, así:

‘Selecciona toda la página
IE.ExecWB 17, 0
Application.Wait (Now + TimeValue(«00:00:03»))

Se copia toda la pagina web, con el siguiente código:

IE.ExecWB 12, 2 

Se cierra Internet Explorer con el siguiente comando:
IE.Quit

Se selecciona la celda A1 de la hoja «Actualizar» y se pegan los datos obtenidos, con el siguiente código:


a.Cells(1, 1).Select
ActiveSheet.PasteSpecial Format:=»HTML», link:=False, noHTMLFormatting:=True

Luego con los datos ya en Excel se procede a trabajar con ellos para acomodarlos de la forma en que se necesitan, esto esta totalmente explicado en el playlist de YouTube donde se tiene el link a cada ejemplo.

 

Código VBA para crear una validación en celda al insertar un dato

Sub ObtieneEstadistica()
‘Usando EXPLORER
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim IE As Object

‘Elimina, crea hoja, asigna nombre
For Each she In Worksheets
mys = she.Name
If she.Name = «Actualizar» Then she.Delete
Next
ActiveWorkbook.Sheets.Add AFTER:=Worksheets(Worksheets.Count)
ActiveSheet.Name = «Actualizar»

UserForm1.ProgressBar1.Value = 20
UserForm1.Label1.Caption = «20 %»
DoEvents

Set a = Sheets(«Actualizar»)
a.Cells.Delete
Set b = Sheets(«Estadisticas»)


UserForm1.ProgressBar1.Value = 30
UserForm1.Label1.Caption = «30 %»
DoEvents
Sheets(«Actualizar»).Select

Set IE = CreateObject(«InternetExplorer.Application»)
With IE
.navigate «https://www.worldometers.info/coronavirus/»
‘ .Visible = True
DoEvents

Do While .readyState <> 4 ‘READYSTATE_COMPLETE
DoEvents
Loop

UserForm1.ProgressBar1.Value = 50
UserForm1.Label1.Caption = «50 %»
DoEvents

‘Selecciona toda la página
IE.ExecWB 17, 0
Application.Wait (Now + TimeValue(«00:00:03»))

‘Copiar todo lo seleccionado
IE.ExecWB 12, 2 ‘Pegar lo copiado
‘Pega en la hoja de Excel
IE.Quit
a.Cells(1, 1).Select
ActiveSheet.PasteSpecial Format:=»HTML», link:=False, noHTMLFormatting:=True

End With

UserForm1.ProgressBar1.Value = 70
UserForm1.Label1.Caption = «70 %»
DoEvents


ultactua = a.Range(«A8»)
totcas = a.Range(«A11»)
totmue = a.Range(«A14»)
totrec = a.Range(«A16»)

totinf = a.Range(«A18»)
totlev = a.Range(«A20»)
totcri = a.Range(«A22»)

totcer = a.Range(«A28»)
totrec = a.Range(«A30»)
totmue = a.Range(«A32»)


a.Range(«A1:P102»).Delete
a.Range(«K:P»).Delete
a.Range(«A:A»).Delete
a.Range(«A227:P10000»).Delete
uf = a.Range(«A» & Rows.Count).End(xlUp).Row

For x = uf To 2 Step -1
If a.Cells(x, «I») = Empty Then a.Cells(x, «B»).EntireRow.Delete
Next x
a.Range(«A1:A3»).EntireRow.Delete

jj = a.Range(«A» & Rows.Count).End(xlUp).Row
For x = 2 To 8
For y = j To jj
a.Cells(y, x) = Replace(a.Cells(y, x), «,», «»)
a.Cells(y, x) = Replace(a.Cells(y, x), «.», «»)
Next y
Next x


‘Copia y ordena los datos en la hoja Estadistica
If b.FilterMode = True Then b.ShowAllData
‘ufb = b.Range(«A» & Rows.Count).End(xlUp).Row
‘If ufb < 5 Then ufb = 5
‘b.Range(«A5:I» & ufb).Clear
‘b.Range(«E2») = a.Range(«A9»)
‘b.Range(«E2:I2»).Merge
‘b.Range(«E2:I2»).HorizontalAlignment = xlCenter

b.Range(«A6») = «TOTAL CASOS CORONAVIRUS – COVID 19»
b.Range(«A7») = «TOTAL CASOS»
b.Range(«A8») = «TOTAL MUERTOS»
b.Range(«A9») = «TOTAL RECUPERADOS»

b.Range(«A11») = «TOTAL CASOS ACTIVOS»
b.Range(«A12») = «TOTAL INFECTADOS»
b.Range(«A13») = «TOTAL CONDICION LEVE»
b.Range(«A14») = «TOTAL CONDICION CRITICA»

b.Range(«A16») = «TOTAL CASOS CERRADOS»
b.Range(«A17») = «TOTAL CASOS TUVIERON RESULTADO»
b.Range(«A18») = «TOTAL RECUPERADOS»
b.Range(«A19») = «TOTAL MUERTOS»

UserForm1.ProgressBar1.Value = 95
UserForm1.Label1.Caption = «95 %»
DoEvents
‘Unload UserForm1
b.Range(«A22:I1000»).Clear
j = 1
a.Range(«A» & j & «:I» & jj).Copy
b.Range(«A22»).PasteSpecial xlPasteValues

b.Range(«A21») = «País»
b.Range(«B21») = «Casos»
b.Range(«C21») = «Nuevos Casos»
b.Range(«D21») = «Muertes»
b.Range(«E21») = «Nuevas Muertes»
b.Range(«F21») = «Recuperados»
b.Range(«G21») = «Casos Activos»
b.Range(«H21») = «Casos Criticos»
b.Range(«I21») = «Casos/1M Pob»
‘b.Range(«A22»).EntireRow.Delete


UserForm1.ProgressBar1.Value = 90
UserForm1.Label1.Caption = «90 %»
DoEvents

 

Application.DisplayAlerts = False
Application.ScreenUpdating = False
a.Delete

Call Ordenar
Call Formato
UserForm1.ProgressBar1.Value = 100
UserForm1.Label1.Caption = «100 %»
DoEvents

MsgBox («Los datos se han importado con éxito » & b.Range(«E2»)), vbInformation, «AVISO»

b.Select
Unload UserForm1
Application.StatusBar = Clear
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Descarga el Libro Como Realizar Raspado Web con Internet Explorer

Descarga desde acá el archivo usado como ejemplo en este post y en el vídeo explicativo, el mismo es totalmente gratuito y libre su uso, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
👉⏩ Cuenta Paypal: https://paypal.me/programarexcel

👉⏩ Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd

👉⏩ Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

👉⏩ Cuenta Skrill: marcrodos@yahoo.es

👉⏩ Cuenta Neteller: marcrodos@yahoo.es

👉⏩ Apoya mi trabajo https://www.patreon.com/programarexcel

👉⏩ Sígueme en DTube: https://d.tube/#!/c/programarexcel01

👉⏩ Sígueme en Odysee: https://odysee.com/@programarexcel:3