【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_playwright

def shot(url, out, width=1280, height=None, delay=2):
    """截图核心函数"""
    with sync_playwright() as p:
        iphone = p.devices['iPhone 14 Pro']  # 也可选 desktop
        browser = 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>,长图自由!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YumOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值