资讯详情

从 Selenium 截图,到 Pillow 图像处理,再到 PyInstaller 打包和控制台窗口控制,这条链路覆盖了自动化开发中常见的关键环节

📅 2026/10/24 6:44:37 | 华诺云谱 👁 阅读
从 Selenium 截图,到 Pillow 图像处理,再到 PyInstaller 打包和控制台窗口控制,这条链路覆盖了自动化开发中常见的关键环节
1024 是程序员群体的专属节日因为 1024 是 2 的 10 次方是二进制世界里最熟悉的数字。对程序员来说这个节日的意义不只是庆祝更是对用代码解决实际问题这一核心能力的致敬。Python 正是这门能力最典型的载体语法简洁、生态丰富从文件处理、网页自动化到图像批量处理、程序打包分发都能用几十行代码完成。本报告围绕一个完整的实战项目展开用 Python 实现网页截图 图像批量处理 打包分发的自动化流水线。它覆盖了 Selenium 网页自动化、Pillow 图像批量处理、控制台窗口控制以及 PyInstaller 打包四个关键模块既适合 1024 程序员节动手实践也适合在自动化办公、素材采集、内容运营等真实场景中复用。二、项目目标与整体架构项目目标给定一组网页 URL程序自动完成以下工作使用 Selenium 打开每个网页并截取完整页面截图使用 Pillow 对截图进行批量处理包括缩放、添加水印将处理后的图片保存到指定输出目录使用 PyInstaller 打包为可执行文件并控制是否显示控制台窗口。整体流程可以理解为URL 列表 → Selenium 截图 → Pillow 批量处理 → 输出图片 → PyInstaller 打包这个流程的价值在于它不是单一脚本而是一条从采集到交付的自动化链路。程序员节写这样一份报告既能展示代码能力也能体现工程化思维。三、环境准备运行本项目前需要安装以下依赖pipinstallselenium pillow pyinstaller webdriver-manager其中selenium用于控制浏览器实现网页访问、等待、截图等操作pillow用于图像打开、缩放、水印添加等批量处理webdriver-manager自动管理浏览器驱动避免手动下载 ChromeDriverpyinstaller用于将 Python 脚本打包为可执行文件。浏览器方面推荐使用 Chrome。如果使用 Edge也可以将ChromeDriverManager替换为对应的 Edge 驱动管理器。四、核心代码实现4.1 网页截图模块Selenium 自动化网页截图是自动化的第一步。Selenium 可以模拟真实浏览器行为打开页面、等待加载、调整窗口尺寸然后保存截图。importosimporttimefromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.chrome.optionsimportOptionsfromwebdriver_manager.chromeimportChromeDriverManagerdefcapture_webpage(url:str,output_path:str,wait_seconds:int3): 使用 Selenium 截取指定网页的完整页面截图。 chrome_optionsOptions()chrome_options.add_argument(--start-maximized)chrome_options.add_argument(--disable-gpu)driverwebdriver.Chrome(serviceService(ChromeDriverManager().install()),optionschrome_options,)try:driver.get(url)time.sleep(wait_seconds)# 获取页面完整高度设置窗口大小后截图heightdriver.execute_script(return document.body.scrollHeight)driver.set_window_size(1920,max(height,1080))time.sleep(1)driver.save_screenshot(output_path)print(f[截图完成]{url}-{output_path})finally:driver.quit()代码解析Options()用于配置浏览器启动参数driver.get(url)打开目标网页document.body.scrollHeight获取页面完整高度避免只截取首屏set_window_size(1920, height)将浏览器窗口设置为页面完整尺寸save_screenshot()保存截图finally块保证浏览器一定会被关闭避免残留进程。亮点相比直接请求 HTMLSelenium 能处理 JavaScript 渲染页面例如动态加载的图片、懒加载内容、SPA 单页应用等。对于现代网页这是更可靠的截图方式。4.2 图像批量处理模块Pillow 水印与缩放截图完成后通常还需要统一尺寸、添加水印、压缩体积。Pillow 非常适合这类批量图像任务。fromPILimportImage,ImageDraw,ImageFontdefadd_watermark_and_resize(input_path:str,output_path:str,watermark_text:str1024 Programmers Day,max_width:int1920,quality:int85,): 对图片进行缩放并添加右下角水印。 withImage.open(input_path)asimg:imgimg.convert(RGBA)# 等比缩放避免图片过大ifimg.widthmax_width:ratiomax_width/img.width new_heightint(img.height*ratio)imgimg.resize((max_width,new_height),Image.LANCZOS)# 创建水印层watermark_layerImage.new(RGBA,img.size,(0,0,0,0))drawImageDraw.Draw(watermark_layer)try:fontImageFont.truetype(arial.ttf,36)exceptException:fontImageFont.load_default()text_bboxdraw.textbbox((0,0),watermark_text,fontfont)text_widthtext_bbox[2]-text_bbox[0]text_heighttext_bbox[3]-text_bbox[1]margin20ximg.width-text_width-margin yimg.height-text_height-margin draw.text((x,y),watermark_text,fill(255,255,255,180),fontfont)# 合并原图和水印层imgImage.alpha_composite(img,watermark_layer)imgimg.convert(RGB)img.save(output_path,qualityquality,optimizeTrue)print(f[图像处理完成]{input_path}-{output_path})代码解析convert(RGBA)保证图片支持透明通道便于水印合成resize()控制输出图片最大宽度避免文件体积过大textbbox()用于计算水印文字尺寸保证水印始终位于右下角alpha_composite()将水印层与原图合并optimizeTrue可以在保存 JPEG/PNG 时优化文件体积。亮点这段代码没有把水印位置写死而是根据图片尺寸动态计算。这样无论截图是长图、宽图还是竖图水印都能保持合理位置。对于批量处理场景这种自适应设计非常重要。4.3 主流程批量处理 URL 列表有了截图和图像处理两个模块后可以把它们组合成完整流水线。defprocess_urls(urls:list[str],output_dir:stroutput_1024):os.makedirs(output_dir,exist_okTrue)forindex,urlinenumerate(urls,start1):screenshot_pathos.path.join(output_dir,fraw_{index}.png)final_pathos.path.join(output_dir,ffinal_{index}.png)print(f\n[任务{index}] 开始处理:{url})capture_webpage(url,screenshot_path)add_watermark_and_resize(screenshot_path,final_path)# 删除原始截图节省空间ifos.path.exists(screenshot_path):os.remove(screenshot_path)print(\n所有任务处理完成)if__name____main__:demo_urls[https://www.python.org,https://www.selenium.dev,https://pillow.readthedocs.io,]process_urls(demo_urls)代码解析os.makedirs(output_dir, exist_okTrue)自动创建输出目录每个 URL 生成两个文件原始截图和最终处理图处理完成后删除原始截图避免占用过多磁盘空间使用enumerate(..., start1)生成可读的文件编号。4.4 控制台窗口控制与 PyInstaller 打包程序开发完成后如果需要分发给同事使用最好打包成可执行文件。PyInstaller 是最常用的打包工具之一。打包为单文件可执行程序pyinstaller--onefile--name1024_auto_tool main.py如果希望运行时不弹出黑色控制台窗口可以加上-w或--windowed参数pyinstaller--onefile--windowed--name1024_auto_tool main.py也可以写成等价形式pyinstaller-F-wmain.py参数含义如下参数作用--onefile/-F打包为单个可执行文件--windowed/-w不显示控制台窗口--console/-c显示控制台窗口默认行为--name指定生成的可执行文件名--icon为 exe 添加图标控制台窗口控制要点如果是调试阶段建议保留控制台窗口方便查看print输出和错误信息正式发布时可以使用--windowed隐藏控制台窗口使用--windowed后print()输出不会显示在屏幕上建议改用日志文件或弹窗提示打包路径尽量使用纯英文目录避免中文路径导致打包异常。五、关键技术亮点总结1. Selenium 处理动态页面更可靠传统爬虫通过requests获取 HTML但很多现代网页依赖 JavaScript 渲染内容。Selenium 直接驱动浏览器可以等待页面加载、滚动触发懒加载、截取完整页面因此更适合截图、表单自动化、动态内容采集等场景。2. Pillow 批量处理具备工程化价值图像批量处理不是简单打开图片而是要考虑尺寸适配、水印位置、透明通道、文件体积和输出格式。本方案通过等比缩放和透明水印层合成保证了不同尺寸截图都能获得统一效果。3. 流水线设计让脚本可复用本项目没有把所有逻辑写在一个函数里而是拆分为截图、图像处理、任务调度三个模块。这样后续可以很方便地扩展例如增加图片压缩、日志记录、失败重试、多线程加速等功能。4. PyInstaller 打包实现脚本即工具很多非技术人员不会安装 Python 环境也不会配置依赖库。通过 PyInstaller 打包可以把脚本变成双击运行的工具。配合--windowed控制控制台窗口还能进一步提升使用体验。5. 合规意识是自动化的前提网页自动化、截图采集、图片下载都必须遵守目标网站的使用条款和 robots 协议不能用于抓取隐私数据、绕过付费内容或高频请求导致服务压力。自动化技术应当用于提升效率而不是破坏规则。六、可扩展方向本项目还可以继续增强增加失败重试机制网络波动时自动重新截图支持多线程同时处理多个 URL提高效率增加日志文件记录每次任务的开始时间、结束时间和异常信息支持配置文件通过 JSON 或 YAML 管理 URL 列表、输出目录和水印文字增加 GUI 界面使用 Tkinter 或 PyQt 提供图形化操作界面支持更多图像操作如批量压缩、格式转换、拼接长图、添加边框。七、结语1024 程序员节的意义不只是向代码致敬更是提醒我们好的技术应当解决真实问题。Python 的价值并不在于写出多么复杂的算法而在于它能用清晰、可靠、可复用的方式把重复劳动变成自动化流程。从 Selenium 截图到 Pillow 图像处理再到 PyInstaller 打包和控制台窗口控制这条链路覆盖了自动化开发中常见的关键环节。它既适合作为程序员节的实践项目也适合作为进一步学习 Python 自动化的起点。写代码的最终目标是让工具替我们完成繁琐工作把时间留给更有创造力的事情。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑