大家好,本文将围绕python 爬取网页内容并保存到数据库展开说明,利用python爬取简单网页数据步骤是一个很多人都想弄明白的事情,想搞清楚python爬取下载链接的文件需要先了解以下几个事情。
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把链接复制到输入框下载即可用python绘制任意角星。') # 提示信息对话窗
#版本更新说明
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_hit
if on_hit == False:
on_hit = True
#获取输入框的值e2导值给url
url = 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 = False
var.set('链接都没有下nm呢?')
#清空按钮
def hit_me2():
global on_hit
if 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 解决文件重复读写的问题(随机函数生成后缀)
效果图: