热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习记录:python获取链接下载

importtkinterastk#使用Tkinter前需要先导入importtkinter.messagebox#要使用messagebox先要导入模块importreque

import tkinter as tk # 使用Tkinter前需要先导入
import tkinter.messagebox # 要使用messagebox先要导入模块
import requests #获取链接库
import random #随机函数库#实例化object,建立窗口window
window = tk.Tk()#给窗口的可视化起名字
window.title('知乎视频下载')#设定窗口的大小(长 * 宽)
window.geometry('450x180') # 这里的乘是小x# 定义一个函数功能,用来代表菜单选项的功能,这里为了操作简单,定义的功能比较简单
counter = 0
def do_job():tkinter.messagebox.showinfo(title='帮助', message='获取视频链接方法\n1."鼠标右键->点击检查"或者"按键盘F12"。\n2."点击检查窗口左上角的鼠标"或者"Ctrl+Shift+C"进入选取模式\n3.点击视频,查看html标签“div class="_190hxbq"->src="链接"”\n把链接复制到输入框下载即可。') # 提示信息对话窗#版本更新说明
def gx_sming():b1 ="知乎下载视频程序\n1.0版本->实现基本下载视频功能\n"b2 ="2.0->增加输入框清空按钮->窗口大小调整 ->增加帮助->增加目录\n"b3 ="3.0 解决文件重复读写的问题(随机函数生成后缀)\n"tkinter.messagebox.showinfo(title='版本更新说明', message=b1+b2+b3 )# 提示信息对话窗# 创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方
menubar = tk.Menu(window)# 创建一个File菜单项(默认不下拉,下拉内容包括New,Open,Save,Exit功能项)
filemenu = tk.Menu(menubar, tearoff=0)
# 将上面定义的空菜单命名为File,放在菜单栏中,就是装入那个容器中
menubar.add_cascade(label='目录', menu=filemenu)# 在File中加入New、Open、Save等小菜单,即我们平时看到的下拉菜单,每一个小菜单对应命令操作。
filemenu.add_command(label='使用方法', command=do_job)
filemenu.add_command(label='版本更新说明', command=gx_sming)filemenu.add_separator() # 添加一条分隔线
filemenu.add_command(label='退出程序', command=window.quit) # 用tkinter里面自带的quit()函数#创建菜单栏完成后,配置让菜单栏menubar显示出来
window.config(menu=menubar) # 在图形界面上设定标签
var = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
l = tk.Label(window, textvariable=var, bg='#000000', fg='white', font=('微软雅黑', 12), width=30, height=2)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l.pack()#链接输入框
e2 = tk.Entry(window, show=None, width='35', font=('微软雅黑', 14)) # 显示成明文形式
e2.pack()# 定义一个函数功能(内容自己自由编写),供点击Button按键时调用,调用命令参数command=函数名
on_hit = False
def hit_me():global on_hitif on_hit == False:on_hit = True#获取输入框的值e2导值给urlurl = e2.get() r = requests.get(url, stream=True)#利用随机函数,解决重负覆盖视频问题list=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]word=random.choice(list)number = random.randint(1,10)name1 = 'vdieo'name2 = '.mp4'vdieo = str(name1) + str(word) + str(number) + str(name2) with open(vdieo, "wb") as mp4:for chunk in r.iter_content(chunk_size=1024 * 1024):if chunk:mp4.write(chunk)#提醒下载成功 var.set('下载成功')else:on_hit = Falsevar.set('链接都没有下nm呢?')#清空按钮
def hit_me2():global on_hitif on_hit == False:on_hit = True e2.delete(0, 'end')var.set('清空成功')else:on_hit = False# 第5步,在窗口界面设置放置Button按键
b = tk.Button(window, text='下载', font=('微软雅黑', 12), width=10, height=1, bg='#FFFFFF', command=hit_me)
b.pack()#清空按钮
q = tk.Button(window, text='清空', font=('微软雅黑', 12), width=10, height=1, bg='#FFFFFF', command=hit_me2)
q.pack()# 第6步,主窗口循环显示
window.mainloop()

get()方法获取Entry 文本框的内容:
txt = entry.get()
1.0 实现基本功能-》开始打包exe程序
下载PyInstaller打包库
#利用pip install PyInstaller 打包exe程序
pyinstaller D:\python_test.py
#当前文件目录 pyinstaller -F ann.py -w
在我们打包的时候:如果是直接指定python文件进行pyinstaller打包的话,如果没有指定路径,需要进入打包文件的目录下执行下面命令,否则还得加上文件路径才能打包。
方法一:pyinstaller -F mycode.py --noconsole
方法二:pyinstaller -F -w mycode.py (-w就是取消窗口)
当你重新打包一个文件后,就会发现只有图形界面了,没有黑色框框,亲测有效(提醒:如果没进入文件路径,打包的时候还需要指定文件路径哦)。

2.0 输入框清空-》窗口大小调整 -》帮助-》目录
e2.delete(0, ‘end’)

窗口调整
https://www.runoob.com/python/python-tkinter-entry.html

1.鼠标右键->点击检查或者按键盘F12。\n
2.点击检查窗口左上角的鼠标或者"Ctrl+Shift+C"进入选取模式\n
3.点击视频注意“div class="_190hxbq"->src=“链接””

3.0 解决文件重复读写的问题(随机函数生成后缀)

效果图:
在这里插入图片描述


推荐阅读
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文介绍了一种从与src同级的config目录中读取属性文件内容的方法。通过使用Java的Properties类和InputStream,可以轻松加载并获取指定键对应的值。 ... [详细]
author-avatar
爱你不愿放cwy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有