Raspe la tabla del sitio web usando Python – Selenium

Selenium es la herramienta de prueba de software de automatización que obtiene el sitio web, realiza varias acciones u obtiene los datos del sitio web. Fue desarrollado principalmente para facilitar el trabajo de prueba mediante la automatización de las aplicaciones web. Hoy en día, además de usarse para pruebas, también se puede usar para hacer que el trabajo tedioso sea interesante. ¿Sabe que con la ayuda de Selenium, también puede extraer datos de la tabla en el sitio web? La respuesta es , podemos eliminar fácilmente los datos de la tabla del sitio web. En este artículo se explica lo que debe hacer para extraer los datos de la tabla del sitio web.

Enfoque a seguir: 

Consideremos el programa HTML simple que contiene tablas solo para comprender el enfoque de extraer la tabla del sitio web.

HTML

<!DOCTYPE html>
<html>
   <head>
      <title>Selenium Table</title>
   </head>
   <body>
      <table border="1">
        <thead>
         <tr>
            <th>Name</th>
            <th>Class</th>
         </tr>
        </thead>
        <tbody>
         <tr>
            <td>Vinayak</td>
            <td>12</td>
         </tr>
         <tr>
            <td>Ishita</td>
            <td>10</td>
         </tr>
        </tbody>
      </table>
   </body>
</html>

Salida del navegador:

Siga los pasos a continuación:

Una vez que haya creado el archivo HTML, puede seguir los pasos a continuación y extraer datos de la tabla del sitio web por su cuenta.

  • Primero, declare el controlador web

driver=webdriver.Chrome(executable_path=”Declare la ruta donde está instalado el controlador web”)

  • Ahora, abra el sitio web desde el que desea obtener los datos de la tabla.
driver.get("Specify the path of the website")
  • A continuación, debe encontrar filas en la tabla.
rows=1+len(driver.find_elements_by_xpath("Specify the altered path"))

Aquí, el xpath alterado significa que si el xpath de la fila 1 es /html/body/table/tbody/tr[1] entonces, el xpath alterado será /html/body/table/tbody/tr Lo que se debe hacer aquí es para eliminar el valor de índice de la fila de la tabla. 

NOTA: Recuerde agregar 1 al valor de la fila para el encabezado de la tabla, ya que no se incluyó al calcular las filas de la tabla.

  • Además, busque columnas en la tabla.
cols=len(driver.find_elements_by_xpath("Specify the altered path"))

Aquí, el xpath alterado significa que si el xpath de la columna que muestra la salida Vinayak es /html/body/table/tbody/tr[1]/td[1] entonces, el xpath alterado será /html/body/table/tbody/tr /td Lo que debe hacerse aquí es eliminar el valor de índice de la fila de la tabla y los datos de la tabla.

  • Además, obtenga datos de cada columna del cuerpo de la tabla.
for r in range(2, rows+1):
     for p in range(1, cols+1):
           value = driver.find_element_by_xpath("Specify the altered path").text

Aquí, el xpath alterado significa que si el xpath de la columna que muestra la salida Vinayak es /html/body/table/tbody/tr[1]/td[1] entonces, el xpath alterado será /html/body/table/tbody/tr [“+str(r)+”]/td[“+str(p)+”] Lo que se debe hacer aquí es agregar str(r) y str(p) para el valor de índice de la fila de la tabla y la tabla datos respectivamente.

  • Finalmente, imprima los datos de la tabla.
print(value, end='       ')  
   print() 

¿Cómo extraer datos de la tabla del sitio web en Selenium?

Como hemos visto ahora, el enfoque a seguir para extraer los datos de la tabla mientras se usa la herramienta de automatización Selenium. Ahora, veamos el ejemplo completo de los datos de la tabla de desguace del sitio web. Utilizaremos este sitio web para extraer los datos de su tabla en el siguiente programa.

Python

# Python program to scrape table from website
  
# import libraries selenium and time
from selenium import webdriver
from time import sleep
  
# Create webdriver object
driver = webdriver.Chrome(
    executable_path="C:\selenium\chromedriver_win32\chromedriver.exe")
  
# Get the website
driver.get(
    "https://www.geeksforgeeks.org/find_element_by_link_text-driver-method-selenium-python/")
  
# Make Python sleep for some time
sleep(2)
  
# Obtain the number of rows in body
rows = 1+len(driver.find_elements_by_xpath(
    "/html/body/div[3]/div[2]/div/div[1]/div/div/div/article/div[3]/div/table/tbody/tr"))
  
# Obtain the number of columns in table
cols = len(driver.find_elements_by_xpath(
    "/html/body/div[3]/div[2]/div/div[1]/div/div/div/article/div[3]/div/table/tbody/tr[1]/td"))
  
# Print rows and columns
print(rows)
print(cols)
  
# Printing the table headers
print("Locators           "+"             Description")
  
# Printing the data of the table
for r in range(2, rows+1):
    for p in range(1, cols+1):
        
        # obtaining the text from each column of the table
        value = driver.find_element_by_xpath(
            "/html/body/div[3]/div[2]/div/div[1]/div/div/div/article/div[3]/div/table/tbody/tr["+str(r)+"]/td["+str(p)+"]").text
        print(value, end='       ')
    print()

Además, ejecute el código python usando:

python run.py

Producción:

Salida del navegador:

Publicación traducida automáticamente

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