ventanas interfaz gui grafica for etiquetas espaƱol entry como centrar botones boton python python-3.x tkinter python-3.5 tkinter-entry

interfaz - tkinter python 3



Usando tkinter para ingresar en una variable, para ser llamado (2)

Actualmente estoy trabajando en un tipo de programa de raspador, que ingresará en una página de Wikipedia, y en su forma actual, raspará las referencias de la página.

Me gustaría tener una guía que permita al usuario ingresar una página de Wikipedia. Quiero que la entrada se adjunte a la variable selectWikiPage , pero no he tenido suerte hasta ahora.

A continuación está mi código actual.

import requests from bs4 import BeautifulSoup import re from tkinter import * #begin tkinter gui def show_entry_fields(): print("Wikipedia URL: %s" % (e1.get())) e1.delete(0,END) master = Tk() Label(master, text="Wikipedia URL").grid(row=0) e1 = Entry(master) e1.insert(10,"http://en.wikipedia.org/wiki/randomness") e1.grid(row=0, column=1) Button(master, text=''Scrape'', command=master.quit).grid(row=3, column=0, sticky=W, pady=4) mainloop( ) session = requests.Session() selectWikiPage = input(print("Please enter the Wikipedia page you wish to scrape from")) if "wikipedia" in selectWikiPage: html = session.post(selectWikiPage) bsObj = BeautifulSoup(html.text, "html.parser") findReferences = bsObj.find(''ol'', {''class'': ''references''}) #isolate refereces section of page href = BeautifulSoup(str(findReferences), "html.parser") links = [a["href"] for a in href.find_all("a", href=True)] for link in links: print("Link: " + link) else: print("Error: Please enter a valid Wikipedia URL")

Muchas gracias de antemano.


Aquí hay un ejemplo diminuto basado en su código; permite usar el campo de entrada para capturar el valor de la página wiki para visitar, y lo imprime en la consola.
A continuación, puede utilizar esta url para continuar con su raspado.

from tkinter import * def m_quit(): global wiki_url wiki_url += e1.get() + ''/'' print(''quitting'') master.destroy() wiki_url = ''http://en.wikipedia.org/wiki/'' master = Tk() Label(master, text="Wikipedia URL").grid(row=0) e1 = Entry(master) e1.grid(row=0, column=1) Button(master, text=''Scrape'', command=m_quit).grid(row=3, column=0, sticky=W, pady=4) mainloop() print(wiki_url)


El código era casi correcto. Algunas modificaciones fueron suficientes. Espero que esto ayude. Comente si necesita más aclaraciones.

import requests from bs4 import BeautifulSoup import re from tkinter import * # you can declare selectWikiPage and master to be global and then avoid passing them around # begin tkinter gui def show_entry_fields(): print("Wikipedia URL: %s" % (e1.get())) e1.delete(0, END) #utility which selects all the text from start to end in widget def select_all(event=None): event.widget.select_range(0, ''end'') return ''break'' #the code is same, just obtained the URL from the widget using get() def custom_scrape(e1, master): session = requests.Session() # selectWikiPage = input("Please enter the Wikipedia page you wish to scrape from") selectWikiPage = e1.get() if "wikipedia" in selectWikiPage: html = session.post(selectWikiPage) bsObj = BeautifulSoup(html.text, "html.parser") findReferences = bsObj.find(''ol'', {''class'': ''references''}) # isolate refereces section of page href = BeautifulSoup(str(findReferences), "html.parser") links = [a["href"] for a in href.find_all("a", href=True)] for link in links: print("Link: " + link) else: print("Error: Please enter a valid Wikipedia URL") master.quit() master = Tk() Label(master, text="Wikipedia URL").grid(row=0) e1 = Entry(master) #bind ctrl+a for selecting all the contents of Entry widget e1.bind(''<Control-a>'', select_all) e1.insert(10, "Enter a wikipedia URL") e1.grid(row=0, column=1) #here, command attribute takes a lambda which itself doesnot take any args, #but in turn calls another function which accepts #arguments #Refer to: https://.com/questions/22723039/python-tkinter-passing-values-with-a-button for details Button(master, text=''Scrape'', command=lambda: custom_scrape(e1, master)).grid(row=3, column=0, sticky=W, pady=4) mainloop()