热门标签 | 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 解决文件重复读写的问题(随机函数生成后缀)

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


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了如何在方法参数中指定一个对象的协议,以及如何调用符合该协议的方法。以一个具体的示例说明了如何在方法参数中指定一个UIView子类对象,并且该对象需要符合PixelUI协议,同时方法需要能够访问该对象的属性。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
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社区 版权所有