如何不写入磁盘从网络PDF提取数据?Python等语言实现方案
Python爬取PDF二进制数据直接转文本,规避磁盘IO耗时问题
问题详情
- 从URL爬取PDF文件,已通过GET请求获取到二进制数据
- 使用PyPDF2转换为文本时,因需要读写数百个磁盘文件,单次处理耗时超3分钟
- 曾尝试使用StringIO,但安装遇到问题且该模块已过时,寻求可直接处理原始二进制数据的方案
解决方案
使用Python原生的io.BytesIO模块,将GET请求返回的二进制数据直接封装为内存中的类文件对象,无需写入磁盘即可供PyPDF2处理,彻底消除磁盘IO带来的性能损耗。
示例代码
import requests from PyPDF2 import PdfReader import io # 发送请求获取PDF二进制内容 resp = requests.get("目标PDF的URL") resp.raise_for_status() # 把二进制数据转为内存类文件对象 pdf_in_memory = io.BytesIO(resp.content) # 读取PDF并提取文本 pdf_reader = PdfReader(pdf_in_memory) extracted_text = "" for page in pdf_reader.pages: extracted_text += page.extract_text() # 后续处理提取的文本 print(extracted_text)
说明
io.BytesIO是Python标准库的一部分,无需额外安装,能完美替代过时的StringIO,将二进制数据在内存中模拟为文件对象,让PyPDF2可以直接读取处理,大幅提升批量PDF的处理效率。
内容的提问来源于stack exchange,提问作者zionc
相关产品推荐
相关产品推荐

