Python - 从网页PDF中提取文本

3
我看到一些帖子介绍将PDF转换为HTML或文本的方法,但它们都是从已保存到计算机上的文件进行处理。是否有办法从网页PDF中提取文本,而不需要下载PDF文件本身(因为我将通过迭代URL列表来处理大量文件)?
我还想知道哪个库是最好的。例如:pdfkit,pdf2txt,pdfminer等?
这是一个示例网站,展示了我要处理的格式:http://www.arkansasrazorbacks.com/wp-content/uploads/2017/02/Miami-Ohio-Game-2.pdf

2
即使在Web浏览器中查看PDF,您也会将其下载到本地缓存中。您的浏览器仍然只显示远程URL,尽管您正在查看的内容已保存到浏览器的tmp目录中。为什么不做同样的事情呢? - Matt Clark
3个回答

6
您可以使用requests将文件作为字节流下载,并用io.BytesIO()包装它,就像这样:
import io

import requests
from pyPdf import PdfFileReader

url = 'http://www.arkansasrazorbacks.com/wp-content/uploads/2017/02/Miami-Ohio-Game-2.pdf'

r = requests.get(url)
f = io.BytesIO(r.content)

reader = PdfFileReader(f)
contents = reader.getPage(0).extractText().split('\n')

f 是一种文件对象,你可以像打开PDF文件一样使用它。这样文件仅存在于内存中,而不会本地保存。

为了从PDF文件中获取文本,你可以使用PyPdf。


这个答案还需要导入io。那么,我该如何从文件对象f中提取文本呢? - rahlf23
编辑了答案,感谢@Milk提供的链接和第二部分,使其更加完整。 - Dror Av.
@Dror Av.,我使用了你的代码片段来帮助另一个用户,链接在这里 https://stackoverflow.com/questions/67931135/how-do-i-obtain-redirected-urls-in-python。谢谢。它帮助了我去帮助别人。 - Raky

1

更新了 PyPDF2 库的代码

import io
import requests
import PyPDF2

url = 'http://www.arkansasrazorbacks.com/wp-content/uploads/2017/02/Miami-Ohio-Game-2.pdf'

r = requests.get(url)
f = io.BytesIO(r.content)

reader = PyPDF2.PdfReader(f)
contents = reader.pages[2].extract_text().split('\n')

0

对上述答案进行了轻微更新

import PyPDF2
import requests
import io


url = 'http://www.arkansasrazorbacks.com/wp-content/uploads/2017/02/Miami-Ohio-Game-2.pdf'

response = requests.get(url)
f = io.BytesIO(response.content)
reader = PyPDF2.PdfReader(f)
pages = reader.pages
# get all pages data
text = "".join([page.extract_text() for page in pages])

这并没有回答问题。一旦您拥有足够的声誉,您将能够对任何帖子进行评论;相反,提供不需要询问者澄清的答案。- 来自审查 - doneforaiur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接