¿Cómo raspar datos de Google Maps usando Python?

En este artículo, discutiremos cómo extraer datos como nombres, calificaciones, descripciones, reseñas, direcciones, números de contacto, etc. de Google Maps usando Python.

Módulos necesarios:

  • Selenium : por lo general, para automatizar las pruebas, se utiliza Selenium. Podemos hacer esto para raspar también, ya que la automatización del navegador aquí ayuda con la interacción de javascript involucrada con clics, desplazamientos, movimiento de datos entre múltiples marcos, etc.
  • Controlador Web/Chrome: Selenium requiere un controlador web para interactuar con el navegador elegido. Los controladores web interactúan con un servidor web remoto a través de un protocolo de conexión común a todos. Puede verificar e instalar los controladores web de su elección de navegador para establecer una conexión con el controlador web. 
    Descargue el controlador Chrome de https://chromedriver.chromium.org/home, luego copie/corte el archivo de su descarga y péguelo en su unidad C, es decir, C:\chromedriver_win32\chromedriver.exe. Asegúrese de seguir esta ruta; de lo contrario, se producirá un error de ruta.

Sintaxis:  

Para la obtención del título del lugar:

review_titles=browser.find_element_by_class_name(“x3AX1-LfntMc-header-title-title”)

imprimir (review_titles.text)

Para la obtención de la calificación del lugar:

stars=browser.find_element_by_class_name(“aMPvhf-fI6EEc-KVuj8d”)

print(“Las estrellas del restaurante son:”,estrellas.texto)

Para obtener la descripción del lugar:

descripción=navegador.buscar_elemento_por_nombre_de_clase(“uxOu9-sTGRBb-T3yXSc”)

imprimir (descripción.texto)

Para obtener la dirección del lugar:

 dirección=navegador.find_elements_by_class_name(“CsEnBe”)[0]

 print(“Dirección: “,dirección.texto)

Para obtener el número de contacto del lugar:

teléfono = navegador.find_elements_by_class_name(“CsEnBe”)[-2]

imprimir («Número de contacto: «, teléfono.texto)

Para obtener las opiniones del lugar:

review=browser.find_elements_by_class_name(“OXD3gb”)

imprimir(“———————— Reseñas ——————–“)

para j en revisión:

     imprimir (j. texto)

Ejemplo 1:

Título de chatarra y calificación.

Python3

# Import the library Selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# Make browser open in background
options = webdriver.ChromeOptions()
options.add_argument('headless')
  
# Create the webdriver object
browser = webdriver.Chrome(
    executable_path="C:\chromedriver_win32\chromedriver.exe", 
  options=options)
  
# Obtain the Google Map URL
url = ["https://www.google.com/maps/place/\
Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!\
4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.\
7936551!4d-74.0124687", "https://www.google.com/maps/place/\
Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!\
1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"]
# Initialize variables and declare it 0
i = 0
  
# Create a loop for obtaining data from URLs
for i in range(len(url)):
  
    # Open the Google Map URL
    browser.get(url[i])
  
    # Obtain the title of that place
    title = browser.find_element_by_class_name(
        "x3AX1-LfntMc-header-title-title")
    print(i+1, "-", title.text)
  
    # Obtain the ratings of that place
    stars = browser.find_element_by_class_name("aMPvhf-fI6EEc-KVuj8d")
    print("The stars of restaurant are:", stars.text)
    print("\n")

Producción:

1 - Papa Johns Pizza
The stars of restaurant are: 3.6

2 - Lucky Da Dhaba
The stars of restaurant are: 3.8

Ejemplo 2:

Título de chatarra y dirección.

Python3

# Import the library Selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# Make browser open in background
options = webdriver.ChromeOptions()
options.add_argument('headless')
  
# Create the webdriver object
browser = webdriver.Chrome(
    executable_path="C:\chromedriver_win32\chromedriver.exe", 
  options=options)
  
# Obtain the Google Map URL
url = ["https://www.google.com/maps/place/\
Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!\
4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.\
7936551!4d-74.0124687", "https://www.google.com/maps/place/\
Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!\
1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"]
  
# Initialize variables and declare it 0
i = 0
  
# Create a loop for obtaining data from URLs
for i in range(len(url)):
  
    # Open the Google Map URL
    browser.get(url[i])
  
    # Obtain the title of that place
    title = browser.find_element_by_class_name(
        "x3AX1-LfntMc-header-title-title")
    print(i+1, "-", title.text)
  
    # Obtain the address of that place
    address = browser.find_elements_by_class_name("CsEnBe")[0]
    print("Address: ", address.text)
    print("\n")

Producción:

1 – Pizza Papa Johns

Dirección: 6602 Bergenline Ave, West New York, NJ 07093, Estados Unidos

2 – Lucky Da Dhaba

Dirección: tienda n.º 2, Patiala Road, National Highway 64, Zirakpur, Punjab 140603

Ejemplo 3:

Título del desguace y número de contacto.

Python3

# Import the library Selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# Make browser open in background
options = webdriver.ChromeOptions()
options.add_argument('headless')
  
# Create the webdriver object
browser = webdriver.Chrome(
    executable_path="C:\chromedriver_win32\chromedriver.exe",
  options=options)
  
# Obtain the Google Map URL
url = ["https://www.google.com/maps/place/\
Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!\
4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.\
7936551!4d-74.0124687", "https://www.google.com/maps/place/\
Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!\
1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"]
  
# Initialize variables and declare it 0
i = 0
  
# Create a loop for obtaining data from URLs
for i in range(len(url)):
  
    # Open the Google Map URL
    browser.get(url[i])
  
    # Obtain the title of that place
    title = browser.find_element_by_class_name(
        "x3AX1-LfntMc-header-title-title")
    print(i+1, "-", title.text)
  
    # Obtain the contact number of that place
    phone = browser.find_elements_by_class_name("CsEnBe")[-2]
    print("Contact Number: ", phone.text)
    print("\n")

Producción:

1 - Papa Johns Pizza
Contact Number:  +1 201-662-7272

2 - Lucky Da Dhaba
Contact Number:  095922 67185

Ejemplo 4:

Título de chatarra y reseñas.

Python3

# Import the library Selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# Make browser open in background
options = webdriver.ChromeOptions()
options.add_argument('headless')
  
# Create the webdriver object
browser = webdriver.Chrome(
    executable_path="C:\chromedriver_win32\chromedriver.exe", 
  options=options)
  
# Obtain the Google Map URL
url = ["https://www.google.com/maps/place/\
Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!\
4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.\
7936551!4d-74.0124687", "https://www.google.com/maps/place/\
Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!\
1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"]
  
# Initialize variables and declare it 0
i = 0
  
# Create a loop for obtaining data from URLs
for i in range(len(url)):
  
    # Open the Google Map URL
    browser.get(url[i])
  
    # Obtain the title of that place
    title = browser.find_element_by_class_name(
        "x3AX1-LfntMc-header-title-title")
    print(i+1, "-", title.text)
  
    # Obtain the reviews of that place
    review = browser.find_elements_by_class_name("OXD3gb")
    print("------------------------ Reviews --------------------")
    for j in review:
        print(j.text)
    print("\n")

Producción:

1 – Pizza Papa Johns

———————— Reseñas ——————–

“La comida es muy buena e incluso hacen la pizza muy rápido, Dios mío”.

“Él se ocupa del dinero también ayuda a hacer la pizza sin guantes de plástico”.

“¡Esta es mi pizzería para ir, sin problemas!”

2 – Lucky Da Dhaba

———————— Reseñas ——————–

“El mejor lugar para un pequeño grupo de personas, la calidad de la comida es increíble”

“Personal agradable y servicio rápido buena cantidad y comida bien cocinada.”

“Pedí pollo biryani, me sirvieron pollo pulao, no biryani.”

Implementación de código:

Python3

# Import the library Selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
  
# Make browser open in background
options = webdriver.ChromeOptions()
options.add_argument('headless')
  
# Create the webdriver object
browser = webdriver.Chrome(
    executable_path="C:\chromedriver_win32\chromedriver.exe",
  options=options)
  
# Obtain the Google Map URL
url = ["https://www.google.com/maps/place/\
Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!\
4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.\
7936551!4d-74.0124687", "https://www.google.com/maps/place/\
Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!\
1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"]
  
# Initialize variables and declare it 0
i = 0
  
# Create a loop for obtaining data from URLs
for i in range(len(url)):
  
    # Open the Google Map URL
    browser.get(url[i])
  
    # Obtain the title of that place
    title = browser.find_element_by_class_name(
        "x3AX1-LfntMc-header-title-title")
    print(i+1, "-", title.text)
  
    # Obtain the ratings of that place
    stars = browser.find_element_by_class_name("aMPvhf-fI6EEc-KVuj8d")
    print("The stars of restaurant are:", stars.text)
  
    # Obtain the description of that place
    description = browser.find_element_by_class_name("uxOu9-sTGRBb-T3yXSc")
    print("Description: ", description.text)
  
    # Obtain the address of that place
    address = browser.find_elements_by_class_name("CsEnBe")[0]
    print("Address: ", address.text)
  
    # Obtain the contact number of that place
    phone = browser.find_elements_by_class_name("CsEnBe")[-2]
    print("Contact Number: ", phone.text)
  
    # Obtain the reviews of that place
    review = browser.find_elements_by_class_name("OXD3gb")
    print("------------------------ Reviews --------------------")
    for j in review:
        print(j.text)
    print("\n")

Producción:

 

Publicación traducida automáticamente

Artículo escrito por vin8rai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *