有没有小伙伴遇到这种情况:数据表格嵌套在网页里,无法直接对网页或元素进行完整的截图?

解决的方法其实很简单,利用【批量数据抓取】并【数据表格导出】为Excel,再结合 Excel 的【区域截图】指令就可以实现:
(ps:如果网站可以直接导出表格的,当然是直接导出表格,跳过批量数据抓取这一步)

1. 部分数据的表头与数据是分开的,需要运用两次批量数据抓取,分别抓取表头和数据。同时需要注意再抓取前,先清空影刀的数据表格。
2. 对导出的表格,最好先进行一次列宽的调整,这样最后的截图数据会比较完整。

除了使用 Excel区域截图 的方式外,其实也可以借助 Python 代码来直接生成图片。参考如下:

from PIL import Image, ImageDraw, ImageFont
# 假设你有一个二维列表data,包含了表格数据
data = datatable
# 设置字体样式
font = ImageFont.truetype(r'C:\Windows\Fonts\msyh.ttc', size=24)
# 初始化每列的最大宽度和行的最大高度
cell_widths = [0] * len(data[0])
max_row_height = 0
# 遍历二维列表并计算每列的最大宽度和行的最大高度
for row in data:
for j, cell in enumerate(row):
# 计算单元格文本的宽度和高度
text_width, text_height = font.getsize(str(cell))
cell_widths[j] = max(cell_widths[j], text_width)
max_row_height = max(max_row_height, text_height + 10)
# 计算图片尺寸
image_width = int(sum(cell_widths) *1)
image_height = int(max_row_height * len(data) *1)
# 创建空白图片
image = Image.new('RGB', (image_width, image_height), (255, 255, 255))
draw = ImageDraw.Draw(image)
# 绘制表格线条和文本
for i, row in enumerate(data):
for j, cell in enumerate(row):
# 检查当前单元格是否为None(合并单元格)
if cell is None:
continue
# 在图片上绘制文本
x = sum(cell_widths[:j])
y = i * max_row_height
draw.text((x, y), str(cell), font=font, fill=(0, 0, 0))
# 保存图片
image.save(r'C:\Users\Administrator\Desktop\截图.png')