如何使用Python从HTML中获取数据并提取图片对应的文本内容
实现思路分为两部分,可按需组合使用
一、图片文本提取(OCR)
- 普通需求直接用
pytesseract:依赖Tesseract OCR引擎,提前安装好引擎本体后,安装pytesseract和Pillow库即可调用,识别前可对图片做二值化、去噪、裁剪等预处理提升准确率。
示例代码:from PIL import Image import pytesseract # 可选:指定Tesseract安装路径(Windows环境需要) # pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' text = pytesseract.image_to_string(Image.open('你的图片路径.png'), lang='chi_sim+eng') print(text) - 中文识别准确率要求高选
PaddleOCR:对中文支持更好,无需单独安装OCR引擎,pip安装后即可直接调用,自带预处理逻辑,识别精度更高。
示例代码:from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True, lang='ch') result = ocr.ocr('你的图片路径.png', cls=True) # 提取所有识别到的文本 text = '\n'.join([line[1][0] for page in result for line in page]) print(text)
二、HTML页面数据提取
- 静态页面(内容直接写在HTML源码里):用
requests库请求页面源码,搭配BeautifulSoup或者lxml库解析,按照元素的标签、类名、id等属性定位目标内容提取即可。如果是表格内容,直接用pandas.read_html()可以一键转成DataFrame格式。
示例代码:import requests from bs4 import BeautifulSoup resp = requests.get('你的目标页面URL') soup = BeautifulSoup(resp.text, 'lxml') # 示例:提取所有p标签的文本 content = [p.get_text(strip=True) for p in soup.find_all('p')] - 动态渲染页面(内容由JS加载,源码里看不到):用
Selenium或者Playwright模拟浏览器运行,等页面内容完全加载后,直接调用工具自带的元素定位方法提取内容,或者拿到渲染后的完整源码再用上面的方法解析。
组合流程(先提取HTML里的图片再识别文本)
你如果需要先从HTML里抓图片再识别,就把上面两个流程串起来:先请求HTML解析出所有img标签的资源地址,下载图片到本地/读入内存,再调用OCR接口提取文本即可。
内容的提问来源于stack exchange,提问作者guidetuanhp
相关产品推荐
相关产品推荐

