La necesidad de extraer datos de sitios web está aumentando. Cuando realizamos proyectos relacionados con datos, como el monitoreo de precios, análisis de negocios o agregador de noticias, siempre tendremos que registrar los datos de los sitios web. Sin embargo, copiar y pegar datos línea por línea ha quedado desactualizado. En este artículo, le enseñaremos cómo convertirse en un "experto" en la extracción de datos de sitios web, que consiste en hacer web scraping con python.
Introducción Artículo
El web scraping es una técnica que podría ayudarnos a transformar datos HTML no estructurados en datos estructurados en una hoja de cálculo o base de datos. Además de usar Python para escribir códigos, acceder a los datos del sitio web con API o data extraction herramientas como Octoparse son otras opciones alternativas para el web scraping.
Para algunos sitios web grandes como Airbnb o Twitter, proporcionarían API para que los desarrolladores accedan a sus datos. API significa interfaz de programación de aplicaciones, que es el acceso para que dos aplicaciones se comuniquen entre sí. Para la mayoría de las personas, API es el enfoque más óptimo para obtener datos proporcionados por el propio sitio web.
Sin embargo, la mayoría de los sitios web no tienen servicios API. A veces, incluso si proporcionan API, los datos que podría obtener no son los que desea. Por lo tanto, escribir una secuencia de comandos de Python para crear un rastreador web se convierte en otra solución poderosa y flexible.
Entonces, ¿Por qué deberíamos usar python en lugar de otros idiomas?
Flexibilidad: Como sabemos, los sitios web se actualizan rápidamente. No solo el contenido sino también la estructura web cambiarían con frecuencia. Python es un lenguaje fácil de usar porque es dinámicamente imputable y altamente productivo. Por lo tanto, las personas pueden cambiar su código fácilmente y mantenerse al día con la velocidad de las actualizaciones web.Potente: Python tiene una gran colección de bibliotecas maduras. Por ejemplo, las solicitudes, beautifulsoup4 podrían ayudarnos a obtener URL y extraer información de las páginas web. Selenium podría ayudarnos a evitar algunas técnicas anti-scraping al dar a los rastreadores web la capacidad de imitar comportamientos de navegación humanos. Además, re, numpy y pandas podrían ayudarnos a limpiar y procesar los datos.
¡Ahora comencemos nuestro viaje en web scraping usando Python!
Paso 1: Importar la biblioteca de Python
En este tutorial, le mostraremos cómo scrape las reseñas de Yelp. Utilizaremos dos bibliotecas: BeautifulSoup en bs4 y request en urllib. Estas dos bibliotecas se usan comúnmente en la construcción de un rastreador web con Python. El primer paso es importar estas dos bibliotecas en Python para que podamos usar las funciones en estas bibliotecas.
Paso 2: Extraer el HTML de la página web
Necesitamos extraer comentarios de “https://www.yelp.com/biz/milk-and-cream-cereal-bar-new-york?osq=Ice+Cream”. Primero, guardemos la URL en una variable llamada URL. Entonces podríamos acceder al contenido de esta página web y guardar el HTML en "ourUrl" utilizando la función urlopen() en la solicitud.
Luego aplicamos BeautifulSoup para analizar la página.
Ahora que tenemos la "soup", que es el HTML sin formato para este sitio web, podríamos usar una función llamada prettify() para limpiar los datos sin procesar e imprimirla para ver la estructura anidada de HTML en la "soup".
Paso 3: Ubica y Scraping las reseñas
A continuación, deberíamos encontrar las reseñas HTML en esta página web, extraerlas y almacenarlas. Para cada elemento en la página web, siempre tendrían una “ID” HTML única. Para verificar su ID, necesitaríamos INSPECT en una página web.
Después de hacer clic en "Inspeccionar elemento" (o "Inspeccionar", depende de diferentes navegadores), podemos ver el HTML de las revisiones.
En este caso, las revisiones se encuentran debajo de la etiqueta llamada "p". Entonces, primero usaremos la función llamada find_all() para encontrar el nodo padre de estas revisiones. Y luego ubique todos los elementos con la etiqueta "p" debajo del nodo padre en un bucle. Después de encontrar todos los elementos "p", los almacenaríamos en una lista vacía llamada “review”.
Ahora tenemos todas las reseñas de esa página. Veamos cuántas reseñas hemos extraído.
Paso 4: Limpia las reseñas
Debe tener en cuenta que todavía hay algunos textos inútiles como “<p lang=’en’>” al comienzo de cada revisión, “<br/>” en el medio de las revisiones y “</p>” en Fin de cada revisión.
“<br/>” representa un salto de línea simple. No necesitamos ningún salto de línea en las revisiones, por lo que tendremos que eliminarlos. Además, “<p lang=’en’>” y “</p>” son el principio y el final del HTML y también debemos eliminarlos.
Finalmente, obtenemos con éxito todas las revisiones limpias con menos de 20 líneas de código.
Aquí hay solo una demostración para scraping 20 comentarios de Yelp. Pero en casos reales, es posible que tengamos que enfrentar muchas otras situaciones. Por ejemplo, necesitaremos pasos como la paginación para ir a otras páginas y extraer los comentarios restantes de esta tienda. O también tendremos que extraer otra información como el nombre del revisor, la ubicación del revisor, el tiempo de revisión, la calificación, el check-in ......
Para implementar la operación anterior y obtener más datos, necesitaríamos aprender más funciones y bibliotecas como el selenio o la expresión regular. Sería interesante pasar más tiempo profundizando en los desafíos del web scraping.
Sin embargo, si está buscando algunas formas simples de hacer scraping web, Octoparse podría ser su solución. Octoparse es una poderosa herramienta de web scraping que podría ayudarlo a obtener fácilmente información de sitios web. Echa un vistazo a este tutorial sobre cómo scrape comentarios de Yelp con Octoparse. ¡No dude en contactarnos cuando necesite una poderosa herramienta de web scraping para su negocio o proyecto!