python入门综合篇—资源爬取与exe打包(图形界面)

了解我的人都知道,我是一个谨言慎行且兴趣爱好广泛的IT,作为一个合格的前端,没事捣鼓一下python很合理吧,再没事搞搞java和php也很合乎逻辑吧,实在没事,玩玩linux服务器也是合乎常理的吧。所以,今天讲的还是python,作为综合篇,主要是对前面的几期博文做一个汇总,在方便进一步理解的同时,也牛刀小试一下,真正的运用起来。

1.前情回顾 

        lz之前写过几篇关于python的单文件片段化代码,其实这几篇也相当于把python最核心的功能做了一个简化测试,即爬虫和自动化  而这也是python语言的魅力所在。今天这篇博客就针对图片爬取和视频爬取做一个汇总吧。

案例说明:利用python做一个图形化界面,可以通过手动输入网址进行在线爬取图片和视频资源,并打包为exe文件,让小白也能在window电脑上运行起来

 

2.准备工作

        君子有所为,有所不为。在做之前先要考察一下是否可行,就好比你给人说珠穆朗玛峰安装电梯,这种一看就是骗人的鬼话,谁会相信。我这个就不一样了,有理有据有案例,堪称让人信服。

python版本:3.12   window10安装python附带的版本。该版本自带pip,推荐

安装依赖库:pip install tkinter(图形化界面依赖)

                     pip install pyinstaller (exe打包依赖)

其他的在运行过程中,缺少什么依赖就对应安装就行。

这里常用命令:pip list  列出安装的依赖;php show pyinstaller  展示对应的依赖信息

安装pyinstaller依赖后需要配置一下环境变量,否则会提示命令不存在。

通过cmd打开终端,输入命令:where pyinstaller.。找到pyinstaller依赖所在

我们再把路径复制出来,复制到\xxx\Scripts 目录就行,然后就是环境变量的配置:

这里以window10为例:

打开我的电脑->右键属性->高级系统设置->环境变量->找到系统变量中的path->把刚才复制的路径添加进去->应用和确定

然后再终端输入pyinstaller -v,能出来版本信息就说明搞定了

至此,万事俱备,只欠东风

3.源码解析

     先来图形化看看效果吧,手动输入要爬取资源的目标网址,点击对应的下载。图片和视频就会下载到对应的目录,可以通过按钮打开查看下载的文件。

tips:这里的图片和视频爬取因为参考了之前两个博客的代码,所以注意事项可以去参考之前两个博客,后面会附带上完整源码。

源码依旧很简单,就一个py文件。别问为啥,问就是我喜欢一个文件能搞定的绝对不弄多个文件。主打就是一个方便好用,你好我也好大家好。

gui.py代码:


#!/usr/bin/python
# -*- coding: UTF-8 -*-import string
import os
import requests
import random
import re
import tkinter as tkdef on_img_click():input_value = entry.get()print("url路径:", input_value)if not os.path.exists('img'):os.makedirs('img')for num in range(5):value = ''.join(random.sample(string.ascii_letters + string.digits, 8))# 下载图片url = input_valuer = requests.get(url)# 写入图片print("新增一张图片:"+value)with open('img/'+value+'.jpg', "wb") as f:f.write(r.content)# 在界面显示输出的提示output_text.insert(tk.END, f"新增一张图片: {value}.jpg\n")output_text.update_idletasks()  # 实时更新界面显示output_text.see(tk.END)  # 滚动到最新的输出def open_image_directory():if not os.path.exists('img'):os.makedirs('img')img_directory = os.path.abspath('img')os.startfile(img_directory)def on_video_click():input_value = entry.get()print("url路径:", input_value)if not os.path.exists('videos'):os.makedirs('videos')url=input_valuefor num in range(2):response = requests.get(url)text = response.text# 使用正则表达式提取视频链接video_url = re.search(r'<video src="(.*?)"', text).group(1)response = requests.get("https:" + video_url, stream=True)if response.status_code == 200:if not os.path.exists('videos'):os.makedirs('videos')video_filename = os.path.basename(video_url)with open(os.path.join('videos', video_filename), 'wb') as video_file:for chunk in response.iter_content(chunk_size=1024):video_file.write(chunk)# 在界面显示输出的提示output_text.insert(tk.END, f"新增一个视频: {video_filename}\n")output_text.update_idletasks()  # 实时更新界面显示output_text.see(tk.END)  # 滚动到最新的输出
def open_video_directory():if not os.path.exists('videos'):os.makedirs('videos')video_directory = os.path.abspath('videos')os.startfile(video_directory)# 创建主窗口
root = tk.Tk()
root.title("自动化爬取图片视频")
root.geometry("600x550")  # 设置窗口大小# 创建输入框和按钮  
#图片 https://www.onexiaolaji.cn/RandomPicture/api?key=qq249663924
#视频 https://tucdn.wpon.cn/api-girl/index.php
tk.Label(root, text="网络路径:").pack(pady=10)entry=tk.Entry(root, width=60)
entry.pack(pady=5)# 创建一个框架,用于放置按钮并实现居中对齐
frameimg = tk.Frame(root,width=400, height=100)
frameimg.pack(pady=5)
# 下载和打开目录
tk.Button(frameimg, text="图片下载", command=on_img_click).pack(side=tk.LEFT,padx=(0, 20))
tk.Button(frameimg, text="图片目录", command=open_image_directory).pack(side=tk.LEFT,padx=(20, 0))# 创建一个框架,用于放置按钮并实现居中对齐
framevideo = tk.Frame(root,width=400, height=100)
framevideo.pack(pady=5)
# 下载和打开目录
tk.Button(framevideo, text="视频下载", command=on_video_click).pack(side=tk.LEFT,padx=(0, 20))
tk.Button(framevideo, text="视频目录", command=open_video_directory).pack(side=tk.LEFT,padx=(20, 0))# 创建输出提示文本框
output_label = tk.Label(root, text="输出:")
output_label.pack(pady=5)output_text = tk.Text(root, height=15, width=50)
output_text.pack(padx=10, pady=5)# 进入主事件循环
root.mainloop()

运行也简单,cd到代码所在对应目录,python gui.py 运行即可

4.打包exe

        这个操作更加简单,简单粗暴的命令:pyinstaller gui.py 即可。打包成功后会在同级目录下有一个dist目录,里面有一个exe文件,就是我们打包的exe啦。但是这个简单粗暴的打包,在运行exe时,会同时显示终端控制台,所以,我们要换下面的打包命令:

pyinstaller --noconsole gui.py

还有可以自定义exe的名称和图标

pyinstaller --name=myapp --icon=myicon.ico gui.py

至此,这个案例就结束啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程Thread

线程Thread简介 任务、线程、金城、多线程 多任务&#xff1a;短时间切换不同得任务 多线程&#xff1a;通过同一条道路&#xff0c;增加道多条道路&#xff0c;提高使用率&#xff0c;解决堵塞问题 普通方法调多线程只有主线一台执行路径是主线程调run()方法&#xff0c;方…

LlamaFactory可视化微调大模型 - 参数详解

LlamaFactory 前言 LLaMA Factory 是一个用于微调大型语言模型的强大工具,特别是针对 LLaMA 系列模型。 可以适应不同的模型架构和大小。 支持多种微调技术,如全参数微调、LoRA( Low-Rank Adaptation )、QLoRA( Quantized LoRA )等。 还给我们提供了简单实用的命令行…

activiti6学习

activiti6使用教程 activiti的数据库表结构主要分为五类&#xff1a; 数据表分类 描述 ACT_GE_* 通用数据表&#xff08;GE表示General&#xff09; ACT_RE_* 流程定义存储表&#xff08;RE表示Repository&#xff09; ACT_ID_* 身份信息表&#xff08;ID表示Identity&#x…

Odoo免费开源ERP如何处理汽车零部件企业的OE编码问题

业务背景 汽车零部件企业在每个汽配零件都有OE编号&#xff0c;即原厂编号&#xff0c;Original Equipment Number。一个配件&#xff0c;可能可以在多个车型上使用&#xff0c;对应的&#xff0c;就有多个可兼容的OE编号。 客户下单时候&#xff0c;直接报OE编号&#xff0c…

集合与最大公因数

题目链接 三个小性质 1.相邻两个数互质,如5,6 2.连续三个奇数互质,如1,3,5 3.连续两个偶数必定有公因子,如2,4 对于这题我们要让四个数两两最大公约数为k&#xff0c;也就是说这四个数除了约数k以外没有其他公约数了&#xff0c;也就是如果我们把k都除掉&#xff0c;剩下四…

C语言 统计文章中的字符种类

有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字 母、小写字母、数字、空格以及其他字符的个数。 #include <stdio.h>int main() {char text[3][80] {"This is a line of text 123.","Another line, with more Characters!"…

objc_object 与 objc_class 是一定要了解的底层结构

入门 在 Objective-C 中&#xff0c;objc_object 和 objc_class 是运行时系统的核心结构&#xff0c;用于表示对象和类。理解它们的结构和关系对于掌握 Objective-C 的运行时机制非常重要。 objc_object 结构 objc_object 结构代表一个 Objective-C 对象。每个 Objective-C …

Python数据处理之高效校验各种空值技巧详解

概要 在编程中,处理空值是一个常见且重要的任务。空值可能会导致程序异常,因此在进行数据处理时,必须确保数据的有效性。Python 提供了多种方法来处理不同数据对象的空值校验。本文将详细介绍如何对Python中的各种数据对象进行空值校验,并包含相应的示例代码,帮助全面掌握…

高速电吹风方案介绍,多档温度风速调节,转速可达105000RPM

高速电吹风是这几年很火的一种电动小家电&#xff0c;能够在较短时间内完成头发干燥&#xff0c;减少对头发的热损伤。可以通过高速电机和风扇来产生高速风流&#xff0c;迅速将头发表面的水分吹干。高速电吹风通常配有多种档位风速和温度可以设置&#xff0c;用户可以根据需要…

大数据笔记--kafka工具AKHQ

目录 一、项目背景 二、项目目标 三、项目部署 1、前提条件 2、流程 2.1、准备工作 2.2、安装AKHQ 2.3、配置AKHQ 2.4、启动AKHQ 四、验证 一、项目背景 日常运维工作中&#xff0c;越来越多的团队成员&#xff0c;包括开发人员、数据分析师和业务运营团队&#xff0…

Linux——开发工具

1.yum yum是centos中的一个软件下载安装管理客户端&#xff0c;可以下载需要的软件或者解决依赖关系问题&#xff08;如动态库&#xff09;。程序都是来源于一段源代码&#xff0c;为了方便下载&#xff0c;源代码被提前在不同的环境下编译好生成对应的yum软件包&#xff0c;存…

运营商如何通过PCDN技术提高用户服务

随着网络技术的快速发展&#xff0c;用户对网络服务的要求也在不断提高。为了满足这些需求&#xff0c;运营商需要不断创新和优化自身的技术和服务。而 PCDN (Personal Content Delivery Network)技术作为一种新兴的内容分发网络解决方案&#xff0c;为运营商提高用户服务提供了…

k8s离线部署芋道源码后端

目录 概述实践Dockerfilek8s部署脚本 概述 本篇将对 k8s离线部署芋道源码后端 进行详细的说明&#xff0c;对如何构建 Dockerfile&#xff0c;如何整合 Nginx&#xff0c;如何整合 ingress 进行实践。 相关文章&#xff1a;[nacos在k8s上的集群安装实践] k8s离线部署芋道源码前…

Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统

文章目录 Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统TFTP服务搭建测试 NFS服务搭建测试 uboot配置TFTP服务搭建测试 NFS服务搭建测试 U-BOOT配置 Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统 TFTP服务搭建 sudo apt install tftpd-hpa su…

智能车载防窒息系统设计

摘要 随着汽车行业的快速发展&#xff0c;车辆安全问题越来越受到人们的关注。其中&#xff0c;车载防窒息系统是一项重要的安全设备。本论文基于STM32单片机&#xff0c;设计了一种智能车载防窒息系统。该系统主要包括氧气浓度检测模块、温湿度检测模块、声音检测模块、光线检…

『ComfyUI』从小白到入门全套教程,奶奶看了都会了!赶紧收藏!

本文简介 Stable Diffusion WebUI 应该是大多数人第一次接触 SD 绘画的工具&#xff0c;这款工具简单易上手&#xff0c;但操作流程相对固定。如果你想拥有更自由的工作流&#xff0c;可以试试 ComfyUI。而且很多新的模型和功能在刚出现时 ComfyUI 的支持度都比较高&#xff0…

拥抱应用创新,拒绝无谓的模型竞争

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

TikTok海外运营,云手机多种变现方法

从现阶段来看&#xff0c;TikTok 的用户基数不断增长&#xff0c;已然成为全球创业者和品牌的全新竞争舞台。其用户数量近乎 20 亿&#xff0c;年轻用户占据主导&#xff0c;市场渗透率也逐年提高。不管是大型企业、著名品牌&#xff0c;还是个体创业者&#xff0c;都绝不能小觑…

matlab 有倾斜的椭圆函数图像绘制

matlab 有倾斜的椭圆函数图像绘制 有倾斜的椭圆函数图像绘制xy交叉项引入斜线负向斜线成分正向斜线成分 x^2 y^2 xy 1 &#xff08;负向&#xff09;绘制结果 x^2 y^2 - xy 1 &#xff08;正向&#xff09;绘制结果 有倾斜的椭圆函数图像绘制 为了确定椭圆的长轴和短轴的…

最新Wireshark查看包中gzip内容

虽然是很简单的事情&#xff0c;但是网上查到的查看gzip内容的方法基本都是保存成zip文件&#xff0c;然后进行二进制处理。 其实现在最新版本的Wireshark已经支持获取gzip内容了。 选中HTTP协议&#xff0c;右键选择[追踪流]->[HTTP Stream] 在弹出窗口中&#xff0c;已…