Python 3 从网络解析 PDF
Python 3 parse PDF from web
我试图从网页获取 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?
使用 io 伪造文件的使用 (Python 3):
import io
output = io.BytesIO()
output.write(requests.get(buildurl(jornal, date, page)).content)
output.seek(0)
pdf_reader = PyPDF2.PdfFileReader(output)
我没有在您的上下文中进行测试,但我测试了这个简单的示例并且它有效:
import io
output = io.BytesIO()
output.write(bytes("hello world","ascii"))
output.seek(0)
print(output.read())
产量:
b'hello world'
您必须使用 BytesIO
:
将返回的 content
转换为类似文件的对象
import io
pdf_content = io.BytesIO(requests.get(buildurl(jornal, date, page)).content)
pdf_reader = PyPDF2.PdfFileReader(pdf_content)
我试图从网页获取 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?
使用 io 伪造文件的使用 (Python 3):
import io
output = io.BytesIO()
output.write(requests.get(buildurl(jornal, date, page)).content)
output.seek(0)
pdf_reader = PyPDF2.PdfFileReader(output)
我没有在您的上下文中进行测试,但我测试了这个简单的示例并且它有效:
import io
output = io.BytesIO()
output.write(bytes("hello world","ascii"))
output.seek(0)
print(output.read())
产量:
b'hello world'
您必须使用 BytesIO
:
content
转换为类似文件的对象
import io
pdf_content = io.BytesIO(requests.get(buildurl(jornal, date, page)).content)
pdf_reader = PyPDF2.PdfFileReader(pdf_content)