Introducción: extracción de reseñas de Google usando Livescraper
Como quizá ya sepas, extraer reseñas de Google puede ser una tarea complicada debido al contenido dinámico que se carga mediante JavaScript. La API oficial de Google Places solo permite a los desarrolladores obtener 5 reseñas por ficha de negocio, lo que a menudo resulta insuficiente. Por eso los desarrolladores recurren a métodos de scraping que les permitan extraer todas las reseñas de Google. Aunque existen varias herramientas de scraping disponibles, una de las soluciones más eficientes y fáciles de usar es Livescraper, una potente herramienta que simplifica la extracción de reseñas de Google, entre otros tipos de datos, sin necesidad de configurar y mantener una infraestructura de scraping compleja. En este blog te explicaremos cómo usar Livescraper para extraer reseñas de Google de forma efectiva.
Instala Livescraper y otros paquetes necesarios
Para empezar, necesitarás instalar Livescraper. Además, puede que necesites algunos paquetes complementarios como Parsel para analizar el HTML. A continuación tienes el comando para instalar Livescraper.
pip install livescraper
pip install parsel # para extraer datos del HTML mediante selectores XPath o CSS
Inicia el navegador
Livescraper utiliza un navegador headless para renderizar páginas dinámicas, igual que hace Selenium. Sin embargo, la configuración y la ejecución son más sencillas. Para empezar, primero tendrás que inicializar el navegador.
from livescraper import Browser
# Inicializar el navegador de Livescraper
browser = Browser(driver_path='./chromedriver') # Proporciona la ruta a tu ChromeDriver
browser.start() # Inicia el navegador
Descarga la página con todas las reseñas
Una vez que el navegador esté iniciado, ya puedes abrir páginas de Google Maps y extraer las reseñas. Para ello, usa el siguiente código para navegar a cualquier URL de una ficha de Google Maps.
# Define la URL del lugar en Google Maps
url = 'https://www.google.com/maps/place/Central+Park+Zoo/@40.7712318,-73.9674707,15z/data=!3m1!5s0x89c259a1e735d943:0xb63f84c661f84258'
# Abrir la página
browser.get(url)
Analizar las reseñas
Una vez cargada la página, puedes comenzar a extraer los datos de las reseñas. Livescraper facilita el análisis del contenido HTML y la extracción de la información de las reseñas.
from parsel import Selector
# Obtener el contenido de la página
page_content = browser.page_source
selector = Selector(page_content)
# Analizar las reseñas
reviews = []
for review in selector.xpath('//div[@class="section-review"]'):
reviews.append({
'author': review.xpath('.//span[@class="section-review-title"]/text()').get(),
'rating': review.xpath('.//span[@aria-label="stars"]/@aria-label').get().replace('stars', '').strip(),
'review_text': review.xpath('.//span[@class="section-review-text"]/text()').get(),
})
# Imprimir los resultados
for review in reviews:
print(review)
Detener el navegador
Es fundamental detener el navegador una vez que tu tarea de scraping haya terminado. Usa el siguiente código para cerrar el navegador después del scraping:
# Detener el navegador
browser.quit()
Multiprocesamiento y otras recomendaciones
Para escalar tus esfuerzos de scraping, considera utilizar multiprocesamiento. Sin embargo, es importante tener en cuenta que cada instancia del navegador consumirá una CPU. Asegúrate de disponer de recursos suficientes para manejar varios procesos. Otra recomendación es usar proxies si haces scraping a gran escala. Esto te ayudará a evitar que Google te bloquee debido a peticiones frecuentes desde la misma dirección IP.
La forma más sencilla de extraer reseñas de Google con Livescraper
Aunque extraer reseñas de Google mediante emulación de navegador ofrece una gran flexibilidad, puede ser costoso en cuanto a recursos, especialmente en operaciones de scraping a gran escala. Además, mantener un scraper capaz de gestionar los cambios frecuentes en el sitio web de Google puede consumir mucho tiempo. Si quieres una solución aún más sencilla, Livescraper ofrece un SDK y una API que facilitan enormemente el acceso a las reseñas de Google sin la molestia de configurar un navegador ni preocuparte por los proxies.
Extraer reseñas en Python usando el SDK de Livescraper
El SDK de Livescraper proporciona un método directo para obtener reseñas directamente desde Google Maps sin tener que gestionar el contenido dinámico manualmente. Así es como puedes usar el SDK para extraer reseñas. Instala el SDK:
pip install livescraper-sdk
Obtén tu API key: visita la plataforma de Livescraper y recupera tu API key desde la página de tu perfil. Usa el SDK para extraer reseñas:
from livescraper_sdk import ApiClient
# Inicializa el cliente de la API con tu API key
api_client = ApiClient(api_key='YOUR_API_KEY')
# Define la URL de Google Maps o el place ID
place_url = 'https://www.google.com/maps/place/Do+or+Dive+Bar/@40.6867831,-73.9570104,17z/'
# Obtener reseñas usando la API
reviews = api_client.get_reviews(
place_url=place_url,
language='en',
limit=100 # Establece un límite en el número de reseñas
)
# Imprimir las reseñas
for review in reviews['reviews_data']:
print(f"Author: {review['author_name']}")
print(f"Rating: {review['review_rating']}")
print(f"Review: {review['review_text']}")
print(f"Link: {review['review_link']}")
print("-" * 80)
Respuesta de la API:
{
"reviews_data": [
"query": "real estate agents in Los Angeles, CA",
"business_name": "Prevu",
"google_id": "0x89c25a18440df38d:0x41db57ca0d7213a0",
"place_id": "ChIJjfMNRBhawokRoBNyDcpX20E",
"place_cid": 4745483157685540000,
"google_place_url": "https://www.google.com/maps?cid=4745483157685539744",
"review_url": "https://search.google.com/local/reviews?placeid=ChIJjfMNRBhawokRoBNyDcpX20E&q=real+estate+agents+in+Los+Angeles,+CA&authuser=0&hl=en&gl=US",
"reviews_per_score": "{1: 2, 2: 1, 3: 2, 4: 1, 5: 623}",
"total_reviews": 629,
"average_rating": 5,
"review_id": "ChdDSUhNMG9nS0VJQ0FnSUN2anFIUW1BRRAB",
"author_link": "https://www.google.com/maps/contrib/100735152414342745869/reviews?hl=en",
"author_title": "Donna Marie",
"author_id": "100735152414342745869",
"author_image": "https://lh3.googleusercontent.com/a/ACg8ocJEQZazUKq5OxvV3RO-EL04yW3EQuSqdQwkEdnjy7jz0VL15A=s120-c-rp-mo-br100",
"review_text": "Very glad I chose Prevu as my real estate agency when looking to purchase a co-op in NYC. Sarah, my agent was incredible helping me find the right place and assisting me with the process of the purchase. And on top of this great service I also got a nice rebate check back. Highly recommend",
"review_img_url": null,
"review_img_urls": null,
"owner_answer": null,
"owner_answer_timestamp": null,
"owner_answer_timestamp_datetime_utc": null,
"review_link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSUN2anFIUW1BRRAB!2m1!1s0x0:0x41db57ca0d7213a0!3m1!1s2@1:CIHM0ogKEICAgICvjqHQmAE%7CCgwI5rzjugYQsJX5lgE%7C? hl=en",
"review_rating": 5,
"review_timestamp": 1733877350316558,
"review_datetime_utc": "11-12-2024 06:05:50",
"review_likes": null,
"reviews_id": 4745483157685540000
},
...
]
}
Videotutorial
Echa un vistazo a nuestro videotutorial para obtener una guía detallada, paso a paso, sobre cómo configurar y usar Livescraper para extraer reseñas de Google. https://www.youtube.com/watch?v=8PwEtCCKZlU
FAQ
¿Cómo extraigo todas las reseñas de Google? Con Livescraper, puedes extraer fácilmente todas las reseñas de Google utilizando el SDK o controlando una ventana de navegador. Para scraping a mayor escala, el SDK proporciona un método sencillo para acceder a los datos sin configuraciones de navegador complejas. ¿Existe una API para las reseñas de Google? Sí, Livescraper ofrece una API que te permite obtener reseñas de Google directamente, sin tener que preocuparte por el renderizado del navegador ni lidiar con JavaScript. Puedes acceder a esta API mediante una API key. ¿Cómo extraer reseñas usando Livescraper? Usando Livescraper puedes extraer reseñas controlando un navegador headless o utilizando el SDK de Livescraper para acceder a los datos directamente. El SDK es la opción más sencilla si quieres evitar gestionar navegadores y proxies por tu cuenta.
