Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo hacer Web Scraping con Selenium

Rafael Zambrano
Cómo hacer Web Scraping con Selenium
El reproductor de video será cargado en breves instantes.

En esta práctica te mostramos cómo se realiza web scraping utilizando la librería Selenium.

Qué es Selenium

El web scraping consiste en extraer datos de la web, y la librería Selenium lo que permite es automatizar navegadores web.

Es una herramienta bastante potente que nos permite utilizar un navegador web como si fuese un humano.

Para poder utilizarlo en Python es necesario disponer de un driver, que podemos descargar para Chrome o Firefox desde http://chromedriver.chromium.org/downloads, y también es interesante conocer la documentación, que es bastante completa y muestra bastantes casos prácticos, la cual podemos consultar en https://selenium-python.readthedocs.io/.

Práctica de web scraping con Selenium

En este ejemplo vamos a extraer datos de esta web, que contiene información climática en diversas estaciones meteorológicas en toda España.

Para acceder a los datos tenemos que rellenar un formulario, elegir una estación meteorológica, las fechas que se quieren consultar, los parámetros que se quieren obtener y hacer clic en “Consultar Datos”.

Estos datos nos aparecen en una nueva pestaña, pero las URLs nunca cambian, siempre son las mismas, por lo que prácticamente la única forma de acceder a esos datos es emulando el comportamiento humano con un programa.

Esto lo haremos instalando la librería Selenium desde nuestro IDE:


	#Instalación de la librería Selenium
	import sys
	!{sys.executable} -m pip install -U selenium

A continuación vamos a generar la petición, para lo que necesitamos el driver chromedriver.exe, el ejecutable del navegador, indicamos la URL de la página dónde debe acceder y finalmente indicamos todo lo que tiene que hacer dentro de la misma.

Esto lo hacemos de esta forma:


	#!/usr/bin/env Python
	# -*- coding: utf-8 -*-
	# Scrapper de las estaciones de la red SIAR

	print(‘Iniciando Scraper’)
	import zipfile
	import os
	import selenium viewport webdriver
	form selenium.webdriver.common.keys import Keys
	import time

driver = webdriver.Chrome(“chromedriver.exe”)
driver.get(‘http://eportal.mapama.gob.es/websiar/SeleccionParametrosMap.aspx?dst=1’)

value_ccaa=8 # Comundad  autónoma
value_ccaa_string = str(value_ccaa)
string_ccaa = ‘select[name=’ctl00$ContentPlaceHolder1$DropDownListCCAA”] option[value=”’+value_ccaa_….
desplegable_ccaa = driver.find_element_by_css_selector(string_ccaa)
click_desplegable_ccaa = desplegable_ccaa.click()

time.sleep(2)

value_prov=50 # Provincia
value_prov_string = str(value_prov)
string_prov = ‘select[name=”ctl00$ContentPlaceHolder1$DropDownListProvincia”] option[value=”’+value ….
desplegable_prov = driver.find_element_by_css_selector(string_prov)
click_desplegable_ prov = desplegable_prov.click()

time.sleep(2)

value_est=2 # Estación
value_est_string = str(value_prov)
string_ est = ‘select[name=”ctl00$ContentPlaceHolder1$DropDownListEstacion”] option[value=”’+value ….
desplegable_ est = driver.find_element_by_css_selector(string_est)
click_desplegable_prov = desplegable_est.click()

time.sleep(5)

agregar_estacion = driver.find_element_by_css_selector(‘input[name= ctl00$Content…
click_agregar_estacion=agregar_estacion_click()

time.sleep(0.5)

driver.find_element_by_id(‘txtFechaIni’).clear() # Borra la fecha de inicio por…

time.sleep(0.5)

driver.find_element_by_id(‘txtFechaFin’).clear() # Borra la fecha fin por defecto…

time.sleep(2)

imputElement = driver.find_element_by_id(“txtFechaIni”)
imputElement.send_keys(‘10/11/2018’) # Fecha de Inicio

time.sleep(2)

imputElement = driver.find_element_by_id(“txtFechaFin”)
imputElement.send_keys(‘15/11/2018’) # Fecha de Fin

time.sleep(2)

consultar_datos_button = driver.find_element_by_css_selector(‘input[name=”…
consultar_datos = consultar_datos_button_click()

time.sleep(2)

driver.swith_to.window(driver.window_handless[1])
exportar_csv_link = driver.find_element_by_css_selector(‘a[id=”ContentPlaceHolder…
descargar_csv = exportar_csv_link.click()

time.sleep(2)


driver.quit() #Cierra el navegador

zip_ref =zipfile.ZipFile(get_download_path()+’/InformeDatos.zip’, ‘r’ # Carga…
zip_ref.extractall(“Resultados/”) # Extrae el zip a la carpeta Resultados
zip_ref.close()
os.remove(get_download_path()+’/InformeDatos.zip’) # Borra el archivo ‘ImportaDatos’…

Para indicar lo que debe hacer dentro de la página, tenemos que inspeccionar los elementos para ver a qué corresponde cada parte del formulario.

Imagen 0 en ¿Cómo hacer Web Scraping con Selenium?

Por ejemplo la Comunidad Autónoma al darle clic a Inspeccionar en el navegador, nos aparece la parte del código fuente de este desplegable, del que nos interesa el nombre del mismo. Además si desplegamos ese código, podemos ver todos los posibles valores que puede tener.

De esta forma podemos indicar los valores de las Comunidades que queremos consultar, y hacemos lo mismo con el resto de elementos, la provincia, la estación, las fechas y al final nos descargamos los resultados.

Si ejecutamos ese código, se abre el navegador y va a realizar todos los pasos que le hemos indicado en el código, y es el propio código Python el que irá rellenando el formulario con los parámetros indicados, el que descargará los datos, y finalmente cerrará el navegador.

Conviértete en un experto del web scrapping, aprende cómo extraer datos de sitios web utilizando Python como lenguaje de programación.

cta-curso-web-scraping

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Experto en base de datos

Experto en base de datos

carrera

Incluye 4 cursos:

  • Curso de creación y administración de Bases de Datos SQL
  • Curso de SQL desde Cero
  • Curso de PostgreSQL: Instalación, configuración y optimización

y 1 cursos más!

Duración: 15 horas y 14 minutos

Curso de Web scraping: Extracción de datos en la Web

Curso de Web scraping: Extracción de datos en la Web

curso

Con este curso aprenderás:

  • Aprenderás a extraer datos web de diversa naturaleza
  • Conocerás librerías del lenguaje Python destinadas a la extracción y procesamiento de datos web
  • Conocerás cómo se comparten datos en la web a través de APIs

Duración: 4 horas y 6 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars