Python 3 从网络解析 PDF

标签 python pdf python-requests pypdf

我试图从网页获取 PDF,解析它并使用 PyPDF2 将结果打印到屏幕上.我使用以下代码让它正常工作:

with open("foo.pdf", "wb") as f:
    f.write(requests.get(buildurl(jornal, date, page)).content)
pdfFileObj = open('foo.pdf', "rb")
pdf_reader = PyPDF2.PdfFileReader(pdfFileObj)
page_obj = pdf_reader.getPage(0)
print(page_obj.extractText())

写一个文件只是为了我可以阅读它虽然听起来很浪费,所以我想我应该用这个来减少中间人:

pdf_reader = PyPDF2.PdfFileReader(requests.get(buildurl(jornal, date, page)).content)
page_obj = pdf_reader.getPage(0)
print(page_obj.extractText())

然而,这会产生一个 AttributeError: 'bytes' object has no attribute 'seek'。如何将来自 requests 的 PDF 直接提供给 PyPDF2?

最佳答案

您必须使用 BytesIO 将返回的 content 转换为类似文件的对象:

import io

pdf_content = io.BytesIO(requests.get(buildurl(jornal, date, page)).content)
pdf_reader = PyPDF2.PdfFileReader(pdf_content)

关于Python 3 从网络解析 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678377/

相关文章:

ruby - 使用 Adob​​e PKCS#7 证书在 Origami 中进行签名 PDF 验证

pdf - Itext pdf 延迟签名导致 pdf 签名无效

java - 文件解码后 PDF 附件损坏

javascript - python-requests模块,post 2个 "values"更新&抓取网站

python - Python Requests 包中的 URI 编码

python - ThreadPoolExecutor、ProcessPoolExecutor 和全局变量

python - 根据多索引的一部分选择 pandas 系列中的条目

python - 使用 networkx 返回负循环

python - 使用 requests.get() 和 requests.session().get() 的区别?

python - 如何在 PyQT 小部件中嵌入 Python 解释器