Python Selenium抓取网页图片转文本并导出CSV的实现求助
落地操作指南
先给明确结论:Selenium可以覆盖页面访问、元素定位、图片获取的全前置流程,只是图片内的文字识别(OCR)需要搭配额外识别能力完成,单靠Selenium本身没法直接从图片像素中提取文本,整体链路完全可以跑通。
1. 先修正现有定位代码的Bug
- 你当前编写的XPath里的
d1是笔误,标准HTML规范不存在这个标签,实际应该是div,不然Selenium会直接抛出元素找不到的异常 - 旧版本Selenium里的
find_element_by_xpath写法已逐步废弃,统一使用By类引入的标准定位方式 - 不要硬编码写
img[1]/img[2]的固定序号定位,直接一次性抓取目标区域下所有img元素,后续页面新增图片也不用调整定位逻辑,参考代码:
from selenium.webdriver.common.by import By # 定位所有contact-text容器下的img元素 img_elements = driver.find_elements(By.XPATH, '//*[@class="contact-text"]/div/img')
- 规避懒加载问题:如果拿到的img元素通过
get_attribute("src")返回的是占位图地址(比如1x1像素的base64空图),需要给页面加滚动逻辑触发图片加载,配合显式等待直到src替换为真实内容再抓取,避免拿到无效图片
2. 图片转文本的核心处理逻辑
定位到img元素后,按以下链路完成文字提取:
- 单张图片的源内容获取二选一即可:
- 方法1(效率更高):直接读取img元素的真实src地址,用请求库下载图片到本地临时路径
- 方法2(无额外网络请求依赖):对img元素直接调用
img_element.screenshot("temp.png")方法,截取元素本身的像素内容存为本地文件
- 把本地图片文件传入本地OCR引擎做文字识别,拿到每张图片对应的文本内容
3. 结果写入CSV的实操注意点
- 用Python自带的
csv模块即可完成写入,不需要额外引入重型依赖 - 打开CSV文件时必须指定
encoding='utf-8-sig',避免用Excel打开中文内容出现乱码 - 写入字段可以自定义为「来源页面URL」「图片序号」「OCR识别文本」三类,方便后续校验识别准确率
常见踩坑提醒
- 如果页面图片加了干扰性的艺术字、噪点,本地OCR识别准确率较低,可以搭配通用OCR接口做二次校验
- 抓取识别完成后记得清理临时存储的图片文件,避免占用磁盘空间
内容的提问来源于stack exchange,提问作者Joyce
相关产品推荐
相关产品推荐

