Como hemos dicho antes, necesitamos obtener el título de las publicaciones, el autor y el número de votos positivos. Empecemos importando los paquetes BeautifulSoup y Pandas y creando tres matrices vacías para cada tipo de información que necesitamos.
from bs4 import BeautifulSoup
import pandas as pd
titles = []
upvotes=[]
authors = []
Vamos a utilizar BeautifulSoup para analizar el documento HTML escribiendo las siguientes líneas:
content = driver.page_source
soup = BeautifulSoup(content, features="html.parser")
Tras inspeccionar con éxito el documento HTML y elegir los selectores adecuados, ahora vamos a recuperar los títulos, los votos positivos y los autores, y asignarlos a la matriz correspondiente:
for element in soup.findAll('div', attrs={'class': '_1oQyIsiPHYt6nx7VOmd1sz'}):
title = element.find('h3', attrs={'class': '_eYtD2XCVieq6emjKBH3m'})
upvote = element.find('div', attrs={'class': '_3a2ZHWaih05DgAOtvu6cIo'})
author = element.find('a', attrs={'class': '_23wugcdiaj44hdfugIAlnX'})
titles.append(title.text)
upvotes.append(upvote.text)
authors.append(author.text)
Por último, almacenaremos la información en un archivo CSV utilizando el paquete Pandas que importamos anteriormente.
df = pd.DataFrame({'Post title': titles, 'Author': authors, 'Number of upvotes': upvotes})
df.to_csv('posts.csv', index=False, encoding='utf-8')
¡Eso es todo! Echemos un vistazo al archivo exportado:
Parece que tiene toda la información que necesitamos.
Consejo extra: A veces, necesitamos más datos de los que proporciona el sitio web en la primera carga. La mayoría de las veces, la acción de obtención de datos se activa cuando el usuario se desplaza hacia abajo. Si necesitas desplazarte hacia abajo para obtener más datos, puedes utilizar el método .execute_script() de esta manera:
scrollDown = "window.scrollBy(0,2000);"
driver.execute_script(scrollDown)
Reflexiones finales
Espero que hayas disfrutado creando el rastreador web tanto como yo. Programar no siempre es divertido, pero crear pequeños scripts como este me recuerda a cuando estaba empezando, y hace que el proceso sea mucho más entretenido.
Aun así, el script que hemos conseguido crear en este tutorial no puede hacer un trabajo muy complejo. Carece de un par de características esenciales que hacen que el web scraping resulte impecable. Conectarse mediante proxies móviles o residenciales y resolver CAPTCHAs son solo algunas de ellas.
Si buscas una forma más profesional de extraer datos, echa un vistazo a lo que WebScrapingAPI puede hacer y comprueba por ti mismo si te conviene. Hay un paquete gratuito, así que la única inversión son 30 minutos de tu tiempo.
Gracias por tomarte el tiempo de leer esto. ¡Feliz scraping!