Controlar el navegador web con Python

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

Deja una respuesta

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