python - 使用 tktinter 输入获取字符串 URL 和下载文件夹
问题描述
我制作了一个脚本,该脚本获取一个包含整个 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)
解决方案
您收到的错误是因为该条目是一个对象,您无法获取数据,因为您获取错误。尝试检索对象中的数据,它很可能是一本字典!
givenurl = tk.Entry(master)
givenplace = tk.Entry(master)
如果你想使用 givenurl,试试这个,
url_var = givenurl.get()
browser.get(url_var)
推荐阅读
- c# - 转换为 3D 后,速度反射不再起作用
- php - Laravel 控制器类型提示
- infragistics - 将 Infragistics dll 从 vesrion 11.1 升级到 18.1
- ios - 如何像选择器一样使用表格视图控制器
- reactjs - react-emotion 和外部 css(例如 bootstrap)类的组合
- php - 如何根据用户输入从多个表的单个列中获取所有行?
- reactjs - React 使用 Axios 填充列表
- node.js - 使用团队上的传出 webhook 通过机器人发布消息时未收到
- java - 爪哇。GregorianCalendar 月份的日期差异不正确
- android - 如何在 HTML 无序列表中缩进和删除行距