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: