如何将网页截图存入Python DataFrame并导出为Excel文档?
实现方案
步骤1:安装依赖库
先确保安装所需工具包:
pip install pandas openpyxl pillow
步骤2:修改截图逻辑,同步收集数据到DataFrame
在现有截图代码基础上,记录每个URL的处理状态、截图路径,并存入DataFrame:
import pandas as pd from selenium import webdriver from time import sleep import os # 替换为你的URL列表 testurl = ["https://example.com", "https://google.com"] driver = webdriver.Chrome() driver.maximize_window() # 初始化数据存储列表 record_list = [] for index, url in enumerate(testurl): screenshot_name = f"screenshot_{index}.png" status = "处理成功" try: driver.get(url) sleep(3) driver.get_screenshot_as_file(screenshot_name) except Exception as e: status = f"处理失败:{str(e)}" screenshot_name = "" print(f"{url} 截图出错: {e}") # 收集单条记录 record_list.append({ "目标URL": url, "截图文件名": screenshot_name, "处理状态": status }) driver.quit() # 转换为DataFrame df = pd.DataFrame(record_list)
步骤3:将截图插入Excel并导出
直接用pandas导出只会保存文本,要在Excel中显示截图,需要用openpyxl手动插入图片:
from openpyxl import load_workbook from openpyxl.drawing.image import Image as OpenpyxlImage # 先导出基础文本数据到Excel excel_file = "网页截图汇总.xlsx" df.to_excel(excel_file, index=False, engine="openpyxl") # 加载Excel文件,开始插入图片 wb = load_workbook(excel_file) ws = wb.active # 调整列宽和行高,适配截图显示 ws.column_dimensions['D'].width = 30 for row in range(2, len(df)+2): ws.row_dimensions[row].height = 120 # 遍历每行插入对应截图 for row_idx, row_data in df.iterrows(): img_path = row_data["截图文件名"] if img_path and os.path.exists(img_path): # 插入到第4列(D列),行号为row_idx+2(Excel表头占第1行) img = OpenpyxlImage(img_path) # 调整图片尺寸,避免超出单元格 img.width = 250 img.height = 180 ws.add_image(img, f'D{row_idx+2}') # 保存最终Excel文件 wb.save(excel_file) print(f"汇总文件已生成:{excel_file}")
额外说明
- 若不需要保留本地PNG文件,可改用
driver.get_screenshot_as_png()获取字节流直接插入Excel,但会大幅增加文件体积,建议保留本地截图文件 - 可以根据需求调整图片大小、单元格尺寸,优化显示效果
内容的提问来源于stack exchange,提问作者David Wallace
相关产品推荐
相关产品推荐

