当前位置: 首页 > backend >正文

【Python 小脚本·大用途 · 第 2 篇】

1. 痛点 100 字

做汇报、写教程、存证据时,只想把「当前网页」截成一整张长图,但浏览器插件要么收费、要么有水印。今天用 28 行 Python 实现「一键网页截图」,支持长图、自定义宽高、延迟加载,还能批量跑 URL 列表。


2. 脚本 28 行

#!/usr/bin/env python3
# webshot.py
import sys, time, argparse
from pathlib import Path
from playwright.sync_api import sync_playwrightdef shot(url, out, width=1280, height=None, delay=2):"""截图核心函数"""with sync_playwright() as p:iphone = p.devices['iPhone 14 Pro']  # 也可选 desktopbrowser = p.webkit.launch(headless=True)page = browser.new_page(**iphone) if not height else \browser.new_page(viewport={'width': width, 'height': height})page.goto(url, wait_until='networkidle')time.sleep(delay)  # 等懒加载page.screenshot(path=out, full_page=True)browser.close()print(f"✅ 已保存 {out}")def main():parser = argparse.ArgumentParser(description="网页长图截图工具")parser.add_argument("url", help="要截图的网址")parser.add_argument("-o", "--output", default="shot.png", help="输出文件名")parser.add_argument("-W", "--width", type=int, default=1280, help="视口宽度")parser.add_argument("-H", "--height", type=int, help="视口高度(可选)")parser.add_argument("-d", "--delay", type=int, default=2, help="等待秒数")args = parser.parse_args()shot(args.url, args.output, args.width, args.height, args.delay)if __name__ == "__main__":main()

3. 一行运行命令

安装依赖(仅一次):

pip install playwright
playwright install webkit

截图百度首页:

python webshot.py https://www.baidu.com -o baidu.png

批量跑 URL 列表(bash 循环):

cat urls.txt | xargs -I {} python webshot.py {} shots/{}.png

4. 效果示例

运行后目录:

shots/
├── baidu.png          # 整页长图
└── github.com.png

长图效果:自动拼接滚动区域,含懒加载图片。


5. 可选参数 & 常见坑

-W 800 -H 1200 生成移动端尺寸;
• 某些站点需登录,可在脚本里加 page.fill() + page.click()
• 若出现字体乱码,Linux 下安装 fonts-noto-cjk
• 大页面内存占用高,可在 launch() 里加 --disable-gpu

把脚本加入 PATH,随时 webshot <URL>,长图自由!

http://www.xdnf.cn/news/17439.html

相关文章:

  • 女子试穿4条裤子留下血渍赔50元引争议:消费责任边界在哪?
  • 【星闪】Hi2821 | UART通用异步收发器 + 串口中断收发例程
  • 【人工智能99问】BERT的原理什么?(23/99)
  • 开启单片机
  • 编程基础之多维数组——矩阵交换行
  • 【YOLOv8改进 - C2f融合】C2f融合Outlook Attention:将细粒度特征编码到 token 中, 提高在图像分类和语义分割等任务中的性能
  • 【算法题】:斐波那契数列
  • 【Python】常用内置模块
  • 安全运维工具链全解析
  • Android快速视频解码抽帧FFmpegMediaMetadataRetriever,Kotlin(2)
  • 大模型开发工具的汇总
  • SQL Server从入门到项目实践(超值版)读书笔记 23
  • cursor, vscode黄色波浪线警告问题
  • 从零到精通:嵌入式BLE开发实战指南
  • 计算机网络:(十四)传输层(下)详细讲解TCP报文段的首部格式,TCP 可靠传输的实现与TCP 的流量控制
  • Mybatis和MybatisPlus的对比区分理解法
  • 基于 RabbitMQ 死信队列+TTL 实现延迟消息+延迟插件基本使用
  • 给AI装上“翻译聚光灯”:注意力机制的机器翻译革命
  • Docker 镜像常见标签(如 `标准`、`slim`、`alpine` 和 `noble`)详细对比
  • 编程基础之字符串——统计数字字符个数
  • TypeScript 中的as const是什么?
  • React:useEffect 与副作用
  • token危机解决?扩散模型数据潜力3倍于自回归,重训480次性能仍攀升
  • 浏览器CEFSharp88+X86+win7 之多页面展示(四)
  • LLaMA-Adapter Efficient Fine-tuning of Language Models with Zero-init Attention
  • Redis - 使用 Redis HyperLogLog 进行高效基数统计
  • Spring Boot与WebSocket构建物联网实时通信系统
  • 基于Spring Boot和WebSocket的实时聊天系统
  • go语言运算符
  • 遇到前端导出 Excel 文件出现乱码或文件损坏的问题