影刀RPA实操指南_长页面全屏截图与滚动截图网页截图的各种场景应对
影刀RPA实操指南:长页面全屏截图与滚动截图——网页截图的各种场景应对
做自动化运营的同学经常有这个需求:把整个网页截下来,生成一份完整的页面快照。
比如:
- 竞品详情页,一次性截取所有内容方便对比
- 自己的店铺首页,截全貌给老板看
- 订单详情页,整个页面存证
但问题来了:大部分网页都很长,浏览器一屏显示不完。影刀自带的"截图"指令只能截当前可视区域,下面的内容怎么办?

这篇文章把网页截图的所有场景和方法一次讲透。
场景分类
先搞清楚你的真实需求是什么:
| 场景 | 需求 | 推荐方案 |
|---|---|---|
| 截取可视区域 | 只截看得到的 | 影刀内置截图指令 |
| 截取某个元素 | 比如商品主图 | 影刀元素截图指令 |
| 截取整个网页 | 从顶到底 | 浏览器全页截图 |
| 截取长图(带滚动) | 比如超长表格 | Selenium截图 |
| 需要高精度 | 用于存档或OCR | Python + 截图库 |
方案一:影刀内置截图指令(最简单)
影刀的浏览器自动化里有两个截图指令:

"截图"指令:截取当前浏览器可视区域。
操作步骤:
- 打开目标网页
- 等待页面加载完成
- 使用"截图"指令 → 选择保存路径
拼多多店群自动化上架方案
- 就得到了当前屏幕能看到的区域
局限:只能截一屏。如果页面有三屏高,只截到第一屏。

"元素截图"指令:截取指定元素的区域。
适用场景:只想要商品主图、订单表格、图表区域等特定元素的截图。
方案二:浏览器开发者工具全页截图(零编码)
在Chrome中,这是最无损的长截图方案:
- 按F12打开开发者工具
- 按 Ctrl+Shift+P(Windows)或 Cmd+Shift+P(Mac)
- 输入 “screenshot” → 选择 “Capture full size screenshot”
- Chrome会自动滚动并拼成一张完整的页面截图,保存到下载目录
在影刀中自动化这个操作:

影刀可以直接用"发送快捷键"模拟开发者工具的操作:
1. 打开目标网页
2. 发送快捷键:F12(打开开发者工具)
3. 等待2秒
4. 发送快捷键:Ctrl+Shift+P
5. 等待1秒
6. 模拟输入:"Capture full size screenshot"
7. 发送按键:Enter
8. 等待3秒
9. 从浏览器下载目录移动截图到目标位置
注意:这个方法依赖Chrome界面,网速慢或者电脑卡的时候,等待时间可能需要加长。
方案三:Python + Selenium实现滚动截图(精确控制)
如果你需要对截图过程有精确控制,或者需要截取比浏览器全页截图更长的内容,用Python代码。
先安装所需库

在影刀中执行Python代码块,需要先确保环境中有以下库:
# 在影刀的Python环境中安装(如果还没装)
# pip install selenium Pillow
完整代码:分段截图+拼接
from selenium import webdriver
from selenium.webdriver.common.by import By
from PIL import Image
import time
import os
def capture_full_page_screenshot(url, output_path, scroll_step=800):
"""
分段截取网页并拼接成长图
url: 目标网页地址
output_path: 输出图片路径
scroll_step: 每次滚动的像素高度(默认800)
"""
driver = webdriver.Chrome()
driver.get(url)
time.sleep(3) # 等待页面加载
# 获取页面总高度
total_height = driver.execute_script("return document.body.scrollHeight")
viewport_height = driver.execute_script("return window.innerHeight")
screenshots = []
current_position = 0
while current_position < total_height:
# 滚动到指定位置
driver.execute_script(f"window.scrollTo(0, {current_position})")
time.sleep(0.5) # 等待渲染
# 截图
screenshot_path = f"screenshot_part_{current_position}.png"
driver.save_screenshot(screenshot_path)
screenshots.append(screenshot_path)
current_position += scroll_step
# 拼接所有截图
images = [Image.open(p) for p in screenshots]
# 计算总宽度和总高度(处理重叠部分)
total_width = max(img.width for img in images)
total_height_canvas = sum(img.height for img in images) - (len(images) - 1) * (scroll_step - viewport_height)
result = Image.new('RGB', (total_width, int(total_height_canvas)))
y_offset = 0
for i, img in enumerate(images):
if i == len(images) - 1:
# 最后一张只取从重叠点到底部的部分
overlap = scroll_step - (viewport_height if i > 0 else 0)
crop_top = max(0, img.height - (total_height - current_position + scroll_step))
result.paste(img.crop((0, crop_top, img.width, img.height)), (0, y_offset))
else:
result.paste(img, (0, y_offset))
y_offset += scroll_step
result.save(output_path)
# 清理临时文件
for p in screenshots:
os.remove(p)
driver.quit()
return output_path
# 调用示例
capture_full_page_screenshot(
"https://example.com/product/12345",
r"D:\screenshots\product_full.png"
)
这段代码的核心逻辑:把页面从上到下分成多段,每段截一张图,然后像拼拼图一样把截到的图片拼接起来。
注意事项

滚动步长:step太大 → 可能漏掉内容;step太小 → 截图太多、拼接慢。一般设置为浏览器窗口高度的80%左右。
异步加载:有些网页内容是随着滚动动态加载的(比如微博、抖音的"无限滚动")。这种页面需要先滚动到底部触发所有内容加载,再分段截图。
固定元素:很多网页顶部有固定导航栏、底部有固定客服按钮。分段截图时这些元素会出现在每一张截图中,导致拼接后导航栏和客服按钮出现多次。可以通过CSS隐藏它们:
driver.execute_script("""
var fixed = document.querySelectorAll('.fixed-header, .fixed-footer, .sticky, .float-bar');
fixed.forEach(function(el) { el.style.display = 'none'; });
""")
方案四:影刀调用浏览器自带的截图API
Chrome DevTools Protocol(CDP)提供了 Page.captureScreenshot 方法,可以截取完整页面。

在影刀中,如果你用的是影刀内置浏览器,可以尝试在流程中加入JavaScript代码块:
TEMU店群如何管理运营?
// 这个方案依赖浏览器是否支持CDP,测试环境可能不可用
// 如果不行就用方案三
这个方法比较不稳定,不同版本的影刀浏览器支持情况不同,推荐优先使用方案三。
截图后的常见处理
添加水印

截图存证时通常需要加水印:
from PIL import Image, ImageDraw, ImageFont
def add_watermark(image_path, text, output_path):
img = Image.open(image_path)
draw = ImageDraw.Draw(img)
# 在右下角添加半透明文字
font = ImageFont.truetype("simhei.ttf", 30)
text_width = draw.textlength(text, font=font)
x = img.width - text_width - 50
y = img.height - 80
draw.text((x, y), text, font=font, fill=(255, 255, 255, 128))
img.save(output_path)
压缩图片
长截图文件往往很大(几MB甚至十几MB),发送前可以压缩:
img.save(output_path, quality=60, optimize=True)
写在最后

网页截图看似简单,实际上场景差异很大。记住三个选型原则:
- 简单快照 → 影刀内置截图指令就够了
- 长页面 → Chrome全页截图或Selenium分段拼接
- 需要处理、加水印 → Python + PIL方案
大部分RPA自动化场景里用的是第二个方案:Chrome全页截图。它零编码、质量高、速度快。只有在需要精确定制(比如去掉导航栏、加水印)时,才上Python方案。
内容标签:影刀RPA · 网页截图 · 长图拼接 · Selenium · 页面快照 · 数据存证
作者:林焱

系列说明:本文是「影刀RPA新手到高手」系列教程之一,面向需要制作页面快照的运营和开发者。
更多推荐


所有评论(0)