Как я могу настроить графический интерфейс tkinter для своей программы очистки веб-страниц?

#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?