📜  构建应用程序以使用Python从 PDF 中提取 URL 和元数据(1)

📅  最后修改于: 2023-12-03 15:10:42.341000             🧑  作者: Mango

构建应用程序以使用 Python 从 PDF 中提取 URL 和元数据

在本篇文章中,我们将介绍如何使用 Python 从 PDF 文件中提取 URL 和元数据。我们将使用 PyPDF2 模块来读取 PDF 文件,使用正则表达式来查找 URL 和元数据。

安装 PyPDF2 模块

要安装 PyPDF2 模块,可以使用 pip 命令:

pip install PyPDF2
读取 PDF 文件

首先,我们需要打开 PDF 文件:

import PyPDF2

pdf_file = open('file.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
提取 URL

要从 PDF 文件中提取 URL,我们可以使用正则表达式。以下是一个示例函数,它使用正则表达式来查找 URL 和链接文本:

import re

def extract_urls(page):
    urls = []
    for match in re.finditer("(?P<url>https?://[^\s]+)", page):
        urls.append(match.group("url"))
    return urls

该函数接受一个页面,并返回一个 URL 列表。

要在整个 PDF 文件中查找 URL,请遍历所有页面,并将其传递给 extract_urls 函数:

for page in range(pdf_reader.getNumPages()):
    urls = extract_urls(pdf_reader.getPage(page).extractText())
    print(f"Page {page}: {urls}")
提取元数据

要从 PDF 文件中提取元数据,我们可以使用 PdfFileReader 对象的 getDocumentInfo 方法:

metadata = pdf_reader.getDocumentInfo()

该方法将返回一个字典,其中包含元数据。以下是一些常用的元数据键:

  • Author:作者
  • Creator:创建者
  • Producer:制造商
  • Subject:主题
  • Title:标题

要检索一个特定键的值,请使用以下代码:

metadata.get('/Author', '')

元数据键以斜杠开头,因此要在键名前添加一个斜杠。

完整代码

以下是一个完整的示例代码,它将提取 PDF 文件中的 URL 和元数据:

import PyPDF2
import re

def extract_urls(page):
    urls = []
    for match in re.finditer("(?P<url>https?://[^\s]+)", page):
        urls.append(match.group("url"))
    return urls

pdf_file = open('file.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)

metadata = pdf_reader.getDocumentInfo()
print(f"Author: {metadata.get('/Author', '')}")
print(f"Title: {metadata.get('/Title', '')}")
print(f"Subject: {metadata.get('/Subject', '')}")

for page in range(pdf_reader.getNumPages()):
    urls = extract_urls(pdf_reader.getPage(page).extractText())
    print(f"Page {page}: {urls}")
结论

现在,我们已经知道了如何从 PDF 文件中提取 URL 和元数据。此代码可以用于构建网络爬虫、自动化数据收集等方面的应用程序。