Obtener valor después de hacer clic en el botón con BeautifulSoup

La biblioteca, BeautifulSoup en Python, además de extraer datos de archivos HTML o XML, ayuda a buscar, modificar y navegar por el árbol de análisis. ¿No puede obtener el valor de un widget después de hacer clic en el botón? No te preocupes. Simplemente lea el artículo detenidamente para conocer el procedimiento para obtener el valor después de hacer clic en el botón con BeautifulSoup.

Enfoque paso a paso:

  • Primero, importe las bibliotecas BeautifulSoup, os y Tkinter.

desde bs4 importar BeautifulSoup como bs

de tkinter importar *

sistema operativo de importación

  • Ahora, elimine el último segmento de la ruta ingresando el nombre del archivo de Python en el que está trabajando actualmente.

base=os.path.dirname(os.path.abspath(‘#Nombre del archivo de Python en el que está trabajando actualmente))

  • Luego, abra el archivo HTML del que desea leer el valor.

html=open(os.path.join(base, ‘#Nombre del archivo HTML del que desea leer el valor’))

  • Además, analice el archivo HTML en Beautiful Soup

sopa=bs(html, ‘html.parser’)

  • A continuación, obtenga el texto después de encontrar el widget del que desea obtener valor.

value=soup.find(“#Nombre del widget”, {“id”:”#Id nombre del widget”}).texto

  • Además, cree una aplicación en la que tenga la opción de hacer clic en el botón

aplicación=Tk()

  • Dale el título y la geometría a tu aplicación.

app.title(“#Título de la aplicación”)

app.geometry(‘#Geometría que deseas dar a la aplicación’)

  • Más tarde, cree una función de cualquier nombre que se ejecute cuando se haga clic en el botón. Puede dar cualquier nombre de función. En este caso, estamos suponiendo que el nombre de la función sea func. Dentro de la función, obtenga el archivo en el que desea obtener el valor después de hacer clic en el botón. A continuación, escriba el valor en el archivo que desea obtener después de hacer clic en el botón

función de definición():

with open(‘#Nombre del archivo de texto en el que desea escribir el valor’, “w”, codificación=’utf-8′) como f_output:

f_output.write(valor)

  • Construya el botón en la aplicación que cuando se hace clic da resultado

b1 = Botón (aplicación, texto = ‘#Texto que desea dar al botón’, comando = función)

  • Además, muestra el botón creado en el paso anterior.

b1.grid(padx=#Relleno desde el eje x, pady=#Relleno desde el eje y)

  • Finalmente, haga el bucle para mostrar la aplicación GUI en la pantalla.

aplicación.mainloop( )

Implementación:

Considere el siguiente código fuente HTML.

HTML

<!DOCTYPE html>
<html>
 <head>
   My First Heading
 </head>
 <body>
   <ul id="list">
     Fruits
     <li>Apple</li>
     <li>Banana</li>
     <li id="here">Mango</li>
   </ul>
  </body>
</html>

Supongamos que desea obtener el valor ‘Mango’ en el archivo txt ‘text_file’ después de hacer clic en el botón ‘¡Haga clic aquí!’, luego puede escribir el siguiente código.

Python

# Python program to obtain value after button click
  
# Import the libraries BeautifulSoup, tkinter and os
from bs4 import BeautifulSoup as bs
import os
from tkinter import *
  
# Remove the last segment of the path
base = os.path.dirname(os.path.abspath('gfg3.py'))
  
# Open the HTML in which you want to make changes
html = open(os.path.join(base, 'gfg.html'))
  
# Parse HTML file in Beautiful Soup
soup = bs(html, 'html.parser')
  
# Find the value which you want to obtain after button click
value = soup.find("li", {"id": "here"}).text
  
# Construct the app for clicking of button
app = Tk()
  
# Give title to your GUI app
app.title("Vinayak App")
  
# Set dimensions for the app
app.geometry('600x400')
  
  
def apple():
  
    # Open the file in which you want to obtain the value
    with open('text_file.txt', "w", encoding='utf-8') as f_output:
  
        # Writing the value in the file
        f_output.write(value)
  
  
# Construct the button in your app
b1 = Button(app, text='Click Here!', command=apple)
  
# Display the button created in previous step
b1.grid(padx=250, pady=150)
  
# Make the loop for displaying app
app.mainloop()

Producción:

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 *