En este artículo vamos a ver cómo controlar el navegador web con Python usando selenium. Selenium es una herramienta de código abierto que automatiza los navegadores web. Proporciona una única interfaz que le permite escribir scripts de prueba en lenguajes de programación como Ruby, Java, NodeJS, PHP, Perl, Python y C#, etc.
Para instalar este módulo, ejecute estos comandos en su terminal:
pip install selenium
Para la automatización, descargue la última versión de Google Chrome junto con chromedriver desde aquí .
Aquí automatizaremos la autorización en » https://auth.geeksforgeeks.org » y extraeremos el nombre, el correo electrónico y el nombre del instituto del perfil de inicio de sesión.
Inicialización y Autorización
Primero, debemos iniciar el controlador web usando selenium y enviar una solicitud de obtención a la URL e identificar el documento HTML y encontrar las etiquetas de entrada y las etiquetas de botón que aceptan el nombre de usuario/correo electrónico, la contraseña y el botón de inicio de sesión.
Para enviar el correo electrónico y la contraseña del usuario a las etiquetas de entrada respectivamente:
driver.find_element_by_name('user').send_keys(email) driver.find_element_by_name('pass').send_keys(password)
Identifique la etiqueta del botón y haga clic en ella usando el selector CSS a través de Selenium webdriver:
driver.find_element_by_css_selector(‘button.btn.btn-green.signin-button’).click()
Raspado de datos
Raspado de información básica del perfil GFG
Después de hacer clic en Iniciar sesión, se debe cargar una nueva página que contiene el nombre, el nombre del instituto y la identificación del correo electrónico. Identifique las etiquetas que contienen los datos anteriores y selecciónelas.
contenedor = controlador.find_elements_by_css_selector(‘div.mdl-cell.mdl-cell–9-col.mdl-cell–12-col-phone.textBold’)
Obtenga el texto de cada una de estas etiquetas de la lista devuelta de selectores css seleccionados:
name = container[0].text try: institution = container[1].find_element_by_css_selector('a').text except: institution = container[1].text email_id = container[2].text
Finalmente, imprima la salida:
print({"Name": name, "Institution": institution, "Email ID": email})
Extraer información de la pestaña Práctica
Haga clic en la pestaña Práctica y espere unos segundos para cargar la página.
driver.find_elements_by_css_selector('a.mdl-navigation__link')[1].click()
Encuentre el contenedor que contiene toda la información y seleccione las cuadrículas usando el selector CSS del contenedor que tiene información.
container = driver.find_element_by_css_selector(‘div.mdl-cell.mdl-cell–7-col.mdl-cell–12-col-phone.whiteBgColor.mdl-shadow–2dp.userMainDiv’)
cuadrículas = contenedor.find_elements_by_css_selector(‘div.mdl-grid’)
Repita cada una de las cuadrículas seleccionadas y extraiga el texto de ella y agréguelo a un conjunto/lista para la salida.
res = set() for grid in grids: res.add(grid.text.replace('\n',':'))
A continuación se muestra la implementación completa:
Python3
# Import the required modules from selenium import webdriver import time # Main Function if __name__ == '__main__': # Provide the email and password email = 'example@example.com' password = 'password' options = webdriver.ChromeOptions() options.add_argument("--start-maximized") options.add_argument('--log-level=3') # Provide the path of chromedriver present on your system. driver = webdriver.Chrome(executable_path="C:/chromedriver/chromedriver.exe", chrome_options=options) driver.set_window_size(1920,1080) # Send a get request to the url driver.get('https://auth.geeksforgeeks.org/') time.sleep(5) # Finds the input box by name in DOM tree to send both # the provided email and password in it. driver.find_element_by_name('user').send_keys(email) driver.find_element_by_name('pass').send_keys(password) # Find the signin button and click on it. driver.find_element_by_css_selector( 'button.btn.btn-green.signin-button').click() time.sleep(5) # Returns the list of elements # having the following css selector. container = driver.find_elements_by_css_selector( 'div.mdl-cell.mdl-cell--9-col.mdl-cell--12-col-phone.textBold') # Extracts the text from name, # institution, email_id css selector. name = container[0].text try: institution = container[1].find_element_by_css_selector('a').text except: institution = container[1].text email_id = container[2].text # Output Example 1 print("Basic Info") print({"Name": name, "Institution": institution, "Email ID": email}) # Clicks on Practice Tab driver.find_elements_by_css_selector( 'a.mdl-navigation__link')[1].click() time.sleep(5) # Selected the Container containing information container = driver.find_element_by_css_selector( 'div.mdl-cell.mdl-cell--7-col.mdl-cell--12-col-phone.\ whiteBgColor.mdl-shadow--2dp.userMainDiv') # Selected the tags from the container grids = container.find_elements_by_css_selector( 'div.mdl-grid') # Iterate each tag and append the text extracted from it. res = set() for grid in grids: res.add(grid.text.replace('\n',':')) # Output Example 2 print("Practice Info") print(res) # Quits the driver driver.close() driver.quit()
Producción:
Publicación traducida automáticamente
Artículo escrito por anilabhadatta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA