#tkinter
Вопрос:
У меня есть функция:
def atime_scrape(asia_times):
# create dataframe
atime = pd.DataFrame(columns = column_names)
# pass url list to URL column
atime['URL'] = asia_times
# create dictionaries
atime_date = {}
atime_title = {}
atime_auth = {}
atime_type = {}
atime_corpus = {}
atime_summary = {}
atime_category = {}
# iterate through URL column to scrape data
for i in atime['URL']:
# general
req = Request(i, headers=headers) # make the request
page = urlopen(req).read() # get the response
soup = bs(page, 'html.parser') # parse the response into a bs object
# date
for x in soup.findAll('meta', {'property':'article:published_time'}):
atime_date[i] = x['content'].split('T',1)[0]
# title
for x in soup.findAll('meta', {'property':'og:title'}):
atime_title[i] = x['content']
# author
for x in soup.findAll('meta', {'name':'twitter:data1'}):
atime_auth[i] = x['content']
# type
for x in soup.findAll('meta', {'property':'og:type'}):
atime_type[i] = x['content']
# text
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
config = Config()
config.browser_user_agent = user_agent
page = Article(i, config=config)
page.download()
page.parse()
atime_corpus[i] = page.text.replace('xa0',' ').replace('n',' ')
# category
for k, v in url_category.items():
if str(i) == str(k):
atime_category[i] = v
# map data by URL to dataframe
atime['Article Date'] = atime['URL'].map(atime_date)
atime['Article Title'] = atime['URL'].map(atime_title)
atime['Author'] = atime['URL'].map(atime_auth)
atime['Source'] = 'Asia Times'
atime['Type'] = atime['URL'].map(atime_type)
atime['Text'] = atime['URL'].map(atime_corpus)
atime['Category'] = atime['URL'].map(atime_category)
return atime.to_csv(testCSV.csv)
В настоящее время моя программа принимает CSV-или XLSX-файл URL-адресов новостных статей, сортирует их по источникам, передает их соответствующим функциям очистки и выводит файл CSV/XLSX с автором, названием, датой, текстом и т. Д.
Я хотел бы создать графический интерфейс в tkinter, который принимает этот файл CSV или EXCEL URL-адресов в качестве текстового ввода, а затем имеет кнопку, которая при нажатии выполняет эту функцию, чтобы вывод представлял собой файл CSV/XLSX, экспортированный на мою машину.
Любые мысли/помощь по этому поводу были бы ВЕСЬМА признательны. Я также рад поделиться своей программой с кем угодно. Он отлично работает и так, но в настоящее время требуется, чтобы пользователь вручную изменил входной файл URL-адресов
Комментарии:
1. Этот вопрос слишком широк для stackoverflow. Если у вас есть конкретный вопрос о том, как
tkinter
это работает, я буду рад попытаться ответить на него.2. Сделайте кнопку с функцией обратного вызова: https://www.tutorialspoint.com/python/tk_button.htm
3. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.
Ответ №1:
У вас может быть что-то вроде этого:
from tkinter import *
import threading
from tkinter import filedialog
gui = Tk()
gui.title("Asian News Scraper")
gui.geometry("600x300")
label = Label(gui, text="Select File: ")
label.grid(row=0, column=0)
def scraper(asian_time):
# Your Scraper Here
pass
def run_scrape():
file = filedialog.askopenfilename(initialdir="/", title="Choose A File", filetypes=(("CSV Files", "*.csv"),("Excel Files", "*.xlsx"))
theader = threading.Thread(target=scraper, args=(file))
theader.start()
button = Label(gui, text="Scrape / Format", command=run_scrape)
gui.mainloop()
Надеюсь, что это ответ на ваш вопрос
Нет информации
Комментарии:
1. И да, мне бы понравилась эта программа. Есть ли у него github?