使用tktinter输入获取字符串URL并下载文件夹

2024-06-25 22:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了一个脚本,在mp3中获得一个包含整个专辑的页面,并下载每首歌曲。 如果我在代码中插入所需的数据,这就像一种魅力,但我想通过GUI插入它。 但它不会跑。结果显示以下错误:

  File "C:\Users\Luan\AppData\Local\Programs\Python\Python38-32\lib\copy.py", line 230, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "C:\Users\Luan\AppData\Local\Programs\Python\Python38-32\lib\copy.py", line 161, in deepcopy
    rv = reductor(4)
TypeError: cannot pickle '_tkinter.tkapp' object

下面是完整的代码,任何帮助都将不胜感激。谢谢

import tkinter as tk

def show_entry_fields():
    print("First Name: %s\nLast Name: %s" % (givenurl.get(), givenplace.get()))

master = tk.Tk()
tk.Label(master, 
         text="Url do Album").grid(row=0)
tk.Label(master, 
         text="Local para baixar").grid(row=1)

givenurl = tk.Entry(master)
givenplace = tk.Entry(master)

givenurl.grid(row=0, column=1)
givenplace.grid(row=1, column=1)

tk.Button(master, 
          text='Quit', 
          command=master.quit).grid(row=3, 
                                    column=0, 
                                    sticky=tk.W, 
                                    pady=4)
tk.Button(master, 
          text='Show', command=show_entry_fields).grid(row=3, 
                                                       column=1, 
                                                       sticky=tk.W, 
                                                       pady=4)

tk.mainloop()

# Ferramenta de Robot do Navegador
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
# need the below imports to work with Explicit wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

## DEFINE LUGAR ONDE OS ARQUIVOS SERAO SALVOS
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : givenplace}
chromeOptions.add_experimental_option("prefs",prefs)

browser = webdriver.Chrome('C:/Windows/chromedriver.exe', chrome_options=chromeOptions)

browser.get(givenurl)
songs = browser.find_elements_by_class_name('player')

## CODIGO QUE PREVINIRA ERRO NA CONSTATE TROCA DE DOMINIO DO SITE
#site = browser.current_url
#print (site)

## PEGA AS INSFORMACOES DENTRO DO SITE, ARMAZENA DADOS DO ARTISTA E DA MUSICA, FAZ O DOWNLOAD
for i in songs:
    print (i.get_attribute("data-title"))
    print (i.get_attribute("data-mp3url"))
    info = i.get_attribute("data-info")
    down = i.get_attribute("data-mp3url")
    browser.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
    browser.get("https://red3mp3.me" +down)

Tags: textfromimportbrowsermastergetseleniumtk
1条回答
网友
1楼 · 发布于 2024-06-25 22:41:51

您收到的错误是因为条目是一个对象,您无法获取数据,因为您获取的数据错误。尝试在对象中检索数据,它很可能是一个字典

givenurl = tk.Entry(master)
givenplace = tk.Entry(master)

如果你想使用givenurl,试试这个

url_var = givenurl.get()
browser.get(url_var)

相关问题 更多 >