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

news2024/9/27 23:29:21

了解我的人都知道,我是一个谨言慎行且兴趣爱好广泛的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 tk

def 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_value
        r = 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_value
    for 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.coloradmin.cn/o/1914331.html

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

相关文章

7个外贸网站模板

Nebula独立站wordpress主题 Nebula奈卜尤拉wordpress主题模板&#xff0c;适合搭建外贸独立站使用的wordpress主题。 https://www.jianzhanpress.com/?p7084 Starling师大林WordPress独立站模板 蓝色橙色风格的WordPress独立站模板&#xff0c;适合做对外贸易的外贸公司搭建…

鲁班猫系统镜像烧录

http://t.csdnimg.cn/0FQ0w2. 系统镜像烧录 — 快速使用手册—基于LubanCat-RK3588系列板卡 文档 烧录鲁班猫系统镜像&#xff0c;配置鲁班猫环境&#xff0c;将整个环境打包用于其他鲁班猫。 先将一个空镜像烧到SD卡中&#xff0c;使用SD卡将鲁班猫开机&#xff0c;使用dd备…

深入理解Python密码学:使用PyCrypto库进行加密和解密

深入理解Python密码学&#xff1a;使用PyCrypto库进行加密和解密 引言 在现代计算领域&#xff0c;信息安全逐渐成为焦点话题。密码学&#xff0c;作为信息保护的关键技术之一&#xff0c;允许我们加密&#xff08;保密&#xff09;和解密&#xff08;解密&#xff09;数据。P…

window下载安装clang

执行clang报错&#xff1a; c:/>clang test.cclang: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found] clang: error: unable to execute command: program not executable clang: error: li…

智慧园区能源管理可视化应用

应用图扑可视化技术&#xff0c;实时监控管理智慧园区内的光伏及其他能源系统&#xff0c;优化能耗配置&#xff0c;提高能源利用效率&#xff0c;推动绿色环保和可持续发展。

Ansys Zemax|什么是点扩散函数( PSF )

附件下载 联系工作人员获取附件 概览 这篇文章讲述了&#xff1a; 什么是点扩散函数&#xff1f; 点列图 快速傅里叶变换计算的点扩散函数&#xff08;FFT PSF&#xff09; 惠更斯算法计算的点扩散函数&#xff08;Huygens PSF&#xff09; 如何使用非序列模式下的透镜和…

一篇教会你 位置式PID 在写码中的应用。

前言&#xff1a;编写不易&#xff0c;仅供学习&#xff0c;参考&#xff0c;谢谢理解&#xff0c;请勿转载。 #位置式|增量式PID区别 本系列的前两篇讲的是位置式PID 没有增量式 PID &#xff0c;PID的变种有很多&#xff0c;常见的有 位置式PID 增量式PID PI PD 抗…

小公司是如何染上大公司病的

小公司&#xff0c;顾名思义就是小&#xff0c;船小好调头。​本应该是最具拼搏精神和灵活性的小公司却不幸染上了大公司病。创业难&#xff0c;守业更难&#xff0c;这些小公司是如何染上大公司病的&#xff1f; 一、管理过度 某公司规定&#xff0c;员工出差&#xff0c;到…

AIGC技术引领创意设计行业革新,“谁”能成职业发展新引擎?

随着科技的日新月异&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;技术正迅速崛起&#xff0c;成为创意设计领域的一股强大新势力。该技术不仅显著提升了设计师的工作效率&#xff0c;更为他们打开了前所未有的创意空间。在这一波技术浪潮中&#xff0c;Adobe国际认证…

高考志愿怎么选专业,哪些是热门专业?

选专业看上去非常简单&#xff0c;但是真正做起来的时候确实不容易&#xff0c;因为对于很多结束高考的学生来说&#xff0c;选专业就意味着他们选择自己的未来&#xff0c;这可是直接关系到未来的学习和职业发展&#xff0c;关系到将来的就业方向&#xff0c;再加上现在的社会…

递归 猴子吃桃-java

有一堆桃子&#xff0c;猴子第一天吃了其中的一半&#xff0c;并再多吃了一个。 以后每天猴子都吃其中的一半&#xff0c;然后再多吃一个。 当到第10天时&#xff0c;想再吃时&#xff08;即还没吃&#xff09;&#xff0c;发现只有一个桃子了。 问题&#xff1a;最初共多少个桃…

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类 1 安装Visual studio 20203,并安装插件1.1 下载并安装 Visual Studio1.2 步骤二:安装 installer projects 扩展插件2 创建安装项目2.1 创建Windows安装项目2.2 新建应用程序安装文件夹2.3 添加…

生物素修饰稀土掺杂无机荧光纳米颗粒

一、基本概述 生物素&#xff0c;也被称为维生素H或辅酶R&#xff0c;是B族维生素的一种&#xff0c;主要参与代谢脂肪和蛋白质&#xff0c;维持人体的正常生长、发育和健康。稀土掺杂无机荧光纳米颗粒则因其良好的光学性能&#xff0c;如窄发射带、高稳定性、良好的生物相容性…

Emacs编辑器:Codigger操作系统中的编程艺术

在Codigger分布式操作系统中&#xff0c;我们荣幸地引入了Emacs编辑器&#xff0c;这是一款全球公认的、功能强大且用途广泛的文本编辑器。它为广大的用户提供了前所未有的文本编辑和软件开发体验。通过与Codigger操作系统以及SIDE的无缝集成&#xff0c;用户在使用过程中可以感…

我的AI音乐梦:ChatGPT帮我做专辑

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;AI篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来ChatGPT帮我做音乐专辑 嘿&#xff0c;朋友们&#xff01; 想象一下&#xff0c;如果有个超级聪明的机器人能帮你写…

linux自动化内存监控与告警

文章目录 前言一、脚本实现1. shell脚本实现2. 脚本功能概览 二、设置定时执行1. 编辑cron任务表2. 设置定时任务 三、通知结果示例总结 前言 在当今数字化与网络化日益普及的时代&#xff0c;系统管理与维护成为了确保业务连续性和数据安全的关键环节。其中&#xff0c;监控系…

fastadmin框架后台列表固定第一行列表固定头部

在列表中,如果列表字段很多,并且每页数量很多,往下拉的时候就不好辨别数据是哪个字段的,对用户造成不好的浏览体验。 通过以下方法,可以实现将列表的第一行,也就是头部,固定在第一行显示,这样就能轻松辨别每个数据对应是哪个字段的,增加用户的使用体验。 打开项目的…

Java面试八股之为什么要使用Redis

为什么要使用Redis 1. 性能提升&#xff1a;高速缓存 要点&#xff1a;Redis作为内存数据库&#xff0c;数据存放在内存中&#xff0c;访问速度远超传统的关系型数据库&#xff08;如MySQL&#xff09;。在项目中&#xff0c;将热点数据&#xff08;如经常被查询但不频繁变更…

AI大模型知识点大梳理_ai大模型的精度以下哪项描述的准确

AI大模型是什么 AI大模型是指具有巨大参数量的深度学习模型&#xff0c;通常**包含数十亿甚至数万亿个参数。**这些模型可以通过学习大量的数据来提高预测能力&#xff0c;从而在自然语言处理、计算机视觉、自主驾驶等领域取得重要突破。 AI大模型的定义具体可以根据参数规模…

汇凯金业:天然橡胶的用途和作用

天然橡胶是一种由橡胶树(Hevea brasiliensis)的乳汁加工而成的弹性体&#xff0c;具有弹性好、强度高、耐磨性好、耐寒性好、电绝缘性好、易于加工等优点&#xff0c;是世界上重要的战略物资和不可缺少的工业原料。 天然橡胶的用途十分广泛&#xff0c;主要应用于以下领域&…