【小技巧】网页如何横向截图长数据?
评论
收藏

【小技巧】网页如何横向截图长数据?

经验分享
阿蓝
2024-09-26 13:44·浏览量:559
阿蓝
发布于 2024-09-25 20:53更新于 2024-09-26 13:44559浏览

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


方法一:

解决的方法其实很简单,利用【批量数据抓取】并【数据表格导出】为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')


收藏1
全部评论1
最新
发布评论
评论