tkinter加载图片,python tkinter photoimage
作为一个电脑爱好者,需要经常更换电脑壁纸吗?但是网上有很多喜欢的图片想要保存,一张一张地保存效率很低。所以本文用Python写了一个保存图片的功能,把我们的图片保存到我们的电脑上。有需要的可以参考一下。
00-1010前言基础开发环境分析网页开始工作实现所有代码。作为电脑爱好者,你也需要经常更换电脑壁纸吗?放上喜欢的图片,整个人会舒服很多。但是网上有很多喜欢的图片想保存。如果一张一张地保存,效率很低,后面还有很多漂亮的壁纸也没时间看。结果就是我们错过了很多好看的壁纸,我们从网站上一张一张地下载太麻烦了。
于是我用Python写了一个保存图片的功能,把我们的图片保存到我们的电脑里,这样我们就可以浏览哪个好看就改了,不用慢慢保存了。
提示:以下是本文的主要内容,以下案例可供参考。
目录
Python的学习从基础开始。给自己找任务,多给自己机会练习。只有实践才有意义,因为实践是最好的学习方式。
前言
路径
Python 3.8
主要模块
Request,BeautifulSoup,tkinter(Python内置库,直接导入即可)
我们先来看看(Python tkinter)的最终效果。高清大图已经保存到本地电脑。
(现在你只需要输入pyinstaller -F -w自己的py文件名。py在控制台中)并且可以打包成exe放到桌面上。
基本开发环境
爬行之前,第一步是分析网页,确定网页是静态的还是动态的。知己知彼,百战不殆,对吗?避免攀爬困难,节省时间。
我们打开网页,点击右键,查看输入的关键词,就可以找到图片的信息。我们可以大致确定这个网站是静态的。然后我们就可以按照普通方法抓取网页了。
分析网页
1.1
首先构造一个伪头来防止简单的抓取,然后向网页发出请求。如果我请求的对象的状态码是200(成功访问),那么就把文本返回给我。
1.2
网页请求成功后,我们就可以分析图片存储在网页的什么地方了。
通过通关,我们发现我们想要的图片是存放在标签div class= list 下的ul标签中,我们需要的图片都在ul标签下。在我们找到位置之后,我们会实例化一个soup对象来找到所有的li标签,然后循环每个li标签,从li标签中的标签B获取图片的名称,然后到img标签的属性src提取图片链接。
下面的代码演示。
1.3
图片名称和图片链接都有。下一步是创建存储位置。因为图片是二进制数据,所以以内容的形式请求,最后以wb的形式写入文件夹。
通过分析网页,我们不难发现翻页的规律,只有循环才能实现,而翻页可以通过爬行来实现。(如果想多翻几页,自己改数字)
index_2.htm
index_3.htm
索引_4.htm
最后就是设置tkinter的图形界面(这里不再太详细,可以去博客上查一下),结合程序就完成设计了。
开始工作
实现
class="brush:py;"># @Author : 王同学
import requests
from bs4 import BeautifulSoup
import os
import tkinter as tk # GUI
import concurrent.futures
import threading
def get_content(url):
headers = {user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36}
response = requests.get(url,headers)
response.encoding = response.apparent_encoding # 自动转码
if response.status_code == 200:
return response.text
def get_data(response):
soup = BeautifulSoup(response,lxml)
all_li = soup.find(class_="list").find(ul)
for i in all_li.find_all(li):
if i.find(b) is not None:
title = i.find(b).text
else:
title = NOT
images = i.find(a).find(img).get(src)
save_images(title,images)
def save_csv():
pass
def save_images(title,images):
if not os.path.exists(img): # 创建文件夹
os.mkdir(img)
headers = {user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36}
images_data = requests.get(url=images,headers=headers).content
with open(img\\ + title + .jpg, mode=wb)as f:
f.write(images_data)
print(正在保存===>: ,title)
# GUI文本框输入
qq.insert(tk.INSERT,"正在保存图片:" + title + \n)
qq.yview_moveto(1)
qq.update()
def main():
print(===================已经点击按钮===========================)
for i in range(2,11):
url = fhttp://www.netbian.com/index_{i}.htm # 循环
qq.insert(tk.INSERT,f==========================正在保存第{i}页的图片==========================+ \n)
qq.update()
print(f============================正在保存第{i}页的数据内容========================)
response = get_content(url)
get_data(response)
qq.insert(tk.INSERT,=================================保存结束================================)
# 多线程 防止GUI卡死
def process_it():
it = threading.Thread(target=main)
it.setDaemon(True)
it.start()
if __name__ == __main__:
# 设置GUI图形界面
windoms = tk.Tk()
windoms.iconbitmap()
windoms.title(图片)
windoms.geometry(500x500+650+300)
# labal
text = tk.Label(windoms,text=图片小程序,font=(华文新魏,20))
text.place(x=170,y=10)
# 按钮
button = tk.Button(windoms,text=开始下载,font=(20),width=30,height=4,fg=Violet,bd=8,command=process_it) # 开始下载
button.place(x=140,y=80)
button1 = tk.Button(windoms,text=退出,font=(20),width=30,fg=Violet,height=4,bd=8,command=windoms.quit) # 退出
button1.place(x=140, y=180)
# 文本框
qq = tk.Text(windoms,state=normal,bg=light cyan,fg=DeepPink)
qq.place(rely=0.6,relheight=0.4)
# 显示窗口
tk.mainloop()
到此这篇关于Python+tkinter实现高清图片保存的文章就介绍到这了,更多相关Python tkinter图片保存内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。