Esta es una guía práctica para poder extraer información de un sitio web. Esto le podría servir para automatizar procesos en su organización o en su negocio. Si tiene un sitio web de dónde usted siempre debe ingresar y extraer una información este artículo le será valiosísimo. Entonces,
¿Qué necesita para poder automatizar el proceso de extraer información de un sitio web? Necesita lo siguiente (todos estos temas se verán en este artículo)
- Preparar su sistema:
- Requiere Python.
- Una extensión de Python (Selenium).
- Y un driver de su navegador.
- Entender un poco de HTML (principalmente comprender cómo ver los html tag al apretar “F12” en Chrome y navegar por ellos).
- Conocer lo suficiente Python para poder realizar “for”, “if” y conocer algunas funciones de Selenium (la extensión de Python) para manipular y extraer información del HTML.
Antes de comenzar este viaje de aprendizaje se recomienda que:
- Tenga una meta personal con un sitio web que usted requiera extraer información.
- Sepa navegar por el sitio que requiera realizar el “Scraping” o extracción automática de información.
Preparar el sistema
Paso 1: Tener Python en su sistema e instalar con él Selenium:
- https://www.anaconda.com/distribution/ (En caso no tenga instalado Python puede descargar Anaconda y comenzar rápidamente con Python y Jupyter Notebook).
- Ingrese esta línea de código: pip install Selenium (ver código)
Paso 2: Descargar Chrome WebDriver (Si usa otro buscador está bien, aquí se trabajará con Chorme ya que es el más usado). Para realizar este paso debe:
- Visitar https://sites.google.com/a/chromium.org/chromedriver/download
- Seleccionar el driver compatible con su versión de Chrome.
Puede verificar su versión de Chrome en los tres puntos que aparece al extremo superior derecho de su navegador. Pinche ahí y luego revise al lado izquierdo “información de Chrome” ahí aparece su versión.
Entendiendo lo básico de HTML
Primero que todo HTML son las siglas de: “Hypertext Markup Language” dado que este es solo un resumen se destacará lo más relevante para hacer “Scraping” a un sitio web. Dentro de las siglas aparece la palabra Markup. Esto es, básicamente, una serie de “tags” o etiquetas que indica la función de cada elemento en relación a los otros. Dicho en simple, un tag es como un sustantivo o verbo dentro de una oración. La oración vendría siendo un sitio web (o una combinación de oraciones) y los elementos que la componen (sustantivos, verbos, artículos, elementos, etc) son los tags.
Por su parte, los tags tienen atributos. Estos son una especie de especificación sobre los tags que ayuda a definirlo. Por ejemplo, las oraciones “un perro toma leche” y “un gato toma leche” tienen el mismo orden sus tags (artículo, sustantivo, verbo, otro sustantivo). Sin embargo, su primer sustantivo es distinto. Aquí cambia su atributo, pero no su tag. Esto es importante, ya que al realizar un “Scraping” uno tiene que saber encontrar el tag que quiere y más aún sus atributos característicos. Es decir, seleccionar el elemento que va a modificar y/o extraer información. Siendo más específico, uno debe decir no sólo que va a modificar, por ejemplo, un sustantivo, sino que cual sustantivo. Dentro de los sustantivos se tienen perro, gato o leche. Y más aún si es leche está el de la primera oración o el de la segunda que debe especificarse.
En HTML los tags y atributos aparecen así: <a href=’www.yo_soy_un_atributo’> </a>
Donde <a> </a> es el tag. Y el atributo es <a href=’www.yo_soy_un_atributo’> </a>
Algunos atributos son nombres, clases, Id, etc. Estos atributos son importantísimos para poder caracterizar de buena manera un elemento y así llamarlos. La idea es que usted conozca el sitio web que quiere analizar y sepa “llamar” exactamente al elemento que quiere.
Actividad Optativa
La idea de esta actividad es que vea los tags y atributos más comunes de un sitio web. Para esto realice los siguiente:
- Abra un sitio web que quiera analizar.
- Presione estando en él F12 (estando en Chrome como navegador).
- Aquí se despliega el código HTML.
- Hay tags que contienen muchos otros tags en ellos (es como un árbol que tiene ramas grandes que contienen ramas más chicas) ¿Cuáles son estos “super” tags?
- ¿Qué tags son los más comunes? ¿Qué atributos son los que más aparecen?
- Presione Ctrl+Shift+c y busqué el elemento que desea modificar. ¿Qué tag y atributos tiene?
Entendiendo lo básico de Python y Selenium
Se trabajará con dos sitios web. Dado el siguiente problema (inventado):
- Se quiere entender el lenguaje humano basándonos en las palabras más usadas.
- Dado este listado de las palabras más usadas en inglés.
- Se quiere categorizar estas palabras para saber si son sustantivos, verbos artículos u otros. Porque supuestamente, esto es muy importante para entender el lenguaje humano. (problema inventado para entender cómo usar Python y Selenium).
- Para saber que función cumplen dentro de la oración se extraerá del diccionario si son sustantivos, verbos, etc. Por un tema de simplicidad, se extraerá solo el primer significado (cada palabra puede tener más de un significado y cumplir distintas funciones basándonos en ese significado).
Para facilitar el código considere el siguiente proceso que debe realizar cada vez que desee llenar formularios o extraer información.
- Llegar al sitio web que necesita: driver.get(“https://www.lexico.com/”)
- Encontrar el formulario o la información que quiere (F12 y lea el HTML o use ctrl+shift+c y seleccione lo que necesita).
Lo anterior son los pasos generales ahora para trabajar con un formulario debe:
- Seleccionarlo: Por ejemplo, use: search= driver.find_elements_by_xpath (” //input[@id=’query’] “). Esto entrega una lista en Python. Debe seleccionar el elemento que necesita de aquí. Luego debe usar: elem = search [0] para seleccionar solo el primer elemento de la lista
- Limpiarlo asegúrese que no tenga nada escrito previo a lo que quiere que se escriba en él: elem.clear()
- Escriba lo que necesita: elem.send_keys(str(a)) luego debe presionar enter para que se envíe la información: elem.send_keys(Keys.RETURN)
Para extraer información de un sitio web debe encontrarla y posteriormente seleccionarla. Sin embargo, generalmente es más difícil encontrar información específica dentro de un sitio web que un formulario. Para este punto revise, cómo se navega para extraer las 1000 palabras más usadas del inglés. Revisé el ejemplo en detalle. Si tiene consultas siéntase libre de preguntar.
Código: https://github.com/robertofuentesr/-open-projects Nombre proyecto: Scraping a WEB Ejemplo Práctico