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