Raspe las reseñas y calificaciones de Google usando Python

En este artículo, veremos cómo raspar las reseñas y calificaciones de Google usando Python.

Módulos necesarios:

  • Beautiful Soup: el mecanismo involucrado en el scraping aquí es analizar el DOM, es decir, de archivos HTML y XML, los datos se extraen
# Installing with pip
pip install beautifulsoup4

# Installing with conda
conda install -c anaconda beautifulsoup4
  • Scrapy: un paquete de código abierto y está destinado a raspar conjuntos de datos más grandes y, como código abierto, también se usa de manera efectiva.
  • 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.
# Installing with pip
pip install selenium

# Installing with conda
conda install -c conda-forge selenium 

Administrador de controladores de Chrome:

# Below installations are needed as browsers
# are getting changed with different versions
pip install webdriver
pip install webdriver-manager

Inicialización del controlador web:

Python3

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
# As there are possibilities of different chrome
# browser and we are not sure under which it get
# executed let us use the below syntax
driver = webdriver.Chrome(ChromeDriverManager().install())

Producción:

[WDM] – ====== Administrador de WebDriver ======

[WDM]: la versión actual de Google Chrome es 99.0.4844

[WDM]: obtenga la última versión del controlador para 99.0.4844

[WDM]: controlador [C:\Users\ksaty\.wdm\drivers\chromedriver\win32\99.0.4844.51\chromedriver.exe] encontrado en caché

Tratemos de ubicar «Rashtrapathi Bavan» y luego realicemos los procedimientos posteriores. A veces, solicitará permiso para acceder a la página si se hace por primera vez. Si se observa algún tipo de problema de permiso, simplemente acéptelo y muévase. más lejos.

Python3

url = 'https://www.google.com/maps/place/Rashtrapathi Bavan'
driver.get(url)

Producción:

https://www.google.com/maps/place/Rashtrapati+Bhavan/@28.6143478,77.1972413,17z/data=!3m1!4b1!4m5!3m4!1s0x390ce2a99b6f9fa7:0x83a25e55f0af1c82!8m2!3d28.6143478!99d43

 

Raspe las reseñas y calificaciones de Google

Aquí intentaremos obtener tres entidades de Google Maps, como la tienda de libros, la comida y los templos, para esto crearemos condiciones específicas y las fusionaremos con la ubicación.

Python3

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementNotVisibleException
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup
  
driver = webdriver.Chrome(ChromeDriverManager().install())
  
  
driver.maximize_window()
driver.implicitly_wait(30)
  
# Either we can hard code or can get via input.
# The given input should be a valid one
location = "600028"
print("Search By ")
print("1.Book shops")
print("2.Food")
print("3.Temples")
print("4.Exit")
ch = "Y"
  
while (ch.upper() == 'Y'):
    choice = input("Enter choice(1/2/3/4):")
      
    if (choice == '1'):
        query = "book shops  near " + location
          
    if (choice == '2'):
        query = "food  near " + location
          
    if (choice == '3'):
        query = "temples  near " + location
          
    driver.get("https://www.google.com/search?q=" + query)
    wait = WebDriverWait(driver, 10)
    ActionChains(driver).move_to_element(wait.until(EC.element_to_be_clickable(
        (By.XPATH, "//a[contains(@href, '/search?tbs')]")))).perform()
    wait.until(EC.element_to_be_clickable(
        (By.XPATH, "//a[contains(@href, '/search?tbs')]"))).click()
    names = []
      
    for name in driver.find_elements(By.XPATH, "//div[@aria-level='3']"):
        names.append(name.text)
    print(names)
  
    ch = input("Do you want to continue (Y/N): ")

Producción:

 

 

Publicación traducida automáticamente

Artículo escrito por priyarajtt 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 *