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://xiahunao.cn/news/3226154.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

UML类图的概述

新书速览|《UML 2.5基础、建模与设计实践》新书速览|《UML 2.5基础、建模与设计实践 类是对一组具有相同属性、操作、关系和语义的对象的抽象&#xff0c;主要包括名称&#xff08;Name&#xff09;部分、属性&#xff08;Attribute&#xff09;部分和操作&#xff08;Operati…

六个Python实用技巧,大幅提升你的编程效率!

关注星标&#xff0c;每天学习Python新技能 Python作为当下最流行的编程语言之一&#xff0c;以其简洁易懂的语法和强大的第三方库支持&#xff0c;深受开发者的喜爱。在实际开发中&#xff0c;掌握一些实用的Python小技巧&#xff0c;可以大大提升编程效率和代码质量。 本文…

windwos下mysql的udf提权

MySql UDF提权介绍 UDF(User Defined Functions)即用户自定义函数&#xff0c;通过这种方式可以实现命令执行&#xff0c;其原理是通过lib_mysqludf_sys提供的函数可以执行系统命令 攻击场景:同之前利用日志写WebShell的场景&#xff0c;即堆叠注入或MySQL终端权限或类似phpMy…

钉钉扫码登录第三方

钉钉文档 实现登录第三方网站 - 钉钉开放平台 (dingtalk.com) html页面 将html放在 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录</title>// jquery<script src"http://code.jqu…

LeetCode刷题之HOT100之最长递增子序列

2024/7/10 晴&#xff0c;睡眠质量良好&#xff0c;到实验室时间9.18。知了在窗外聒噪&#xff0c;似乎让我安心&#xff0c;静下来。做题吧 1、题目描述 2、算法分析 给一个整数数组&#xff0c;要求出里面最长严格递增子序列的长度。遇到这种问题&#xff0c;想到的就是DP算…

【逆向基础】九、dnSpy使用技巧随记

一、dnSpy逆向工具的使用 1、反汇编适用范围&#xff1a;C#,.NET等语言编写的程序 2、工具的获取&#xff1a;dnSpy (ps:大家可自行去网页搜索下载最新版) 3、打开需要反汇编的程序&#xff0c;成功后出现如图所示的界面 4、dnSpy反汇编.NET程序后&#xff0c;可以像开发一样…

算术运算符用途解析及应用案例

文章目录 常用的算术运算符及其用途&#xff1a;运算符优先级类型转换高级用法 应用案例1. 计算器程序2. 平方根计算3. 计算平均数和标准差4. 货币兑换5. 计算几何6. 动力学模拟7. 数字图像处理8. 金融计算&#xff1a;复利计算 常用的算术运算符及其用途&#xff1a; 算术运算…

怎么简单快捷的分享文件呢?扫描二维码看文件的制作方法

怎么简单快捷的分享文件呢&#xff1f;想要快速的实现文件分享&#xff0c;那么可以将文件转成二维码之后&#xff0c;通过分享二维码让其他人扫码在手机上查看文件&#xff0c;可以将单个文件或者多个文件生成二维码&#xff0c;扫描点击文件就能够在手机上预览或者下载文件。…

【JavaScript】深入理解Promise:从基础概念到进阶用法、手写promise

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、Promise概述1. Promise的定义2. Promise的用途3. Promise的三种状态4. Promise的构造函数和基础结构5. Promise的优点6. Promise的实例方法7. Promise的静态方法 三、Promise的基本用法1. 创建一个Promise2. th…

居家客服人员分散,更需要统一客服话术

1、居家客服服务需求激增 近年来&#xff0c;随着线上消费的兴起&#xff0c;以及客服人员成本的不断攀升&#xff0c;越来越多的企业选择雇佣居家客服&#xff0c;以客服服务发包的形式接待客户的咨询。因此&#xff0c;居家客服人员的数量也逐渐增加。然而&#xff0c;居家办…

【探索Linux】P.38(传输层 —— TCP协议通信连接管理机制简介 | TCP连接状态转换)

阅读导航 引言一、TCP协议通信连接管理机制二、连接状态转换1. TCP状态转换图2. 状态转换过程3. 理解TIME_WAIT状态&#xff08;1&#xff09;目的和作用&#xff08;2&#xff09;状态转换&#xff08;3&#xff09;特殊情况&#xff08;4&#xff09;影响和优化 4. 理解 CLOS…

纯技术分享:淘宝商品详情原数据接口参数解析

item_get_app-获得淘宝app商品详情原数据 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_s…

【React】Ant Design -- Table分页功能实现

实现步骤 为Table组件指定pagination属性来展示分页效果在分页切换事件中获取到筛选表单中选中的数据使用当前页数据修改params参数依赖引起接口重新调用获取最新数据 const pageChange (page) > {// 拿到当前页参数 修改params 引起接口更新setParams({...params,page})…

免费GPU——Google Colab使用

免费GPU——Google Colab使用 1、创建新的Notebook 网址&#xff1a;https://colab.research.google.com/ 点击“新建笔记本”进行创建 2、设置免费GPU 点击“更改运行时类型”&#xff0c;打开界面如下所示&#xff1a; 选择“T4 GPU”&#xff0c;然后“保存”即可使用…

通用图形处理器设计GPGPU基础与架构(一)

GPGPU背景 GPGPU&#xff08;General Purpose Graphics Processing Unit&#xff0c;通用图形处理器&#xff09;脱胎于GPU (Graphics Processing Unit&#xff0c;图形处理器&#xff09;。GPGPU由于其强大的运算能力和高度灵活的可编程性&#xff0c;已经成为深度学…

大模型应用中什么是SFT(监督微调)?

大模型应用中什么是SFT&#xff08;监督微调&#xff09;&#xff1f; 一、SFT的基本概念 监督微调&#xff08;Supervised Fine-Tuning, SFT&#xff09;是对已经预训练的模型进行特定任务的训练&#xff0c;以提高其在该任务上的表现。预训练模型通常在大量通用数据上进行训…

模型和应用,哪个更重要?

前言 2024 年 7 月 4 日&#xff0c;世界人工智能大会暨人工智能全球治理高级别会议全体会议在上海世博中心举行。百度创始人李彦宏在产业发展主论坛上发言&#xff0c;呼吁不要卷模型&#xff0c;要卷应用。 目录 四个要点 积极的观点 不合理性 总结 四个要点 李彦宏的呼吁…

【经典链表OJ】环形链表

一、题目要求 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…

2024年上海市安全员C3证证考试题库及上海市安全员C3证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年上海市安全员C3证证考试题库及上海市安全员C3证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试…

ATA-M4功率放大器在充粘液管道损伤检测中的应用

实验名称&#xff1a;充粘液管道损伤检测 实验原理&#xff1a;在管道上的传感器激发一束超声能量脉冲&#xff0c;此脉冲沿着管道长度方向向远处传播&#xff0c;并充斥整个圆周方向&#xff0c;在导波传播过程中遇到缺陷时&#xff0c;入射波会在缺陷处发生反射、透射&#x…