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: