构建应用程序以使用Python从 PDF 中提取 URL 和元数据
PDF(便携式文档格式)是 Adobe 开发的最常用的独立于平台的文件格式,用于展示文档。 Python有很多与 PDF 相关的包,其中之一是pdfx模块。 pdfx模块用于从给定的 PDF 或 PDF URL 中提取 URL、元数据和纯文本。
特征:
- 从给定的 PDF 中提取参考和元数据。
- 检测 pdf、URL、arxiv 和 DOI 引用。
- 快速、并行下载所有引用的 PDF。
- 检查断开的链接(使用 -c 标志)。
- 输出为文本或 JSON(使用 -j 标志)。
- 提取 PDF 文本(使用 –text 标志)。
- 使用命令行工具或Python包。
- 与Python 2 和 3 兼容。
- 适用于本地和在线 pdf。
入门:
首先,我们需要安装pdfx模块,在终端中运行以下代码。
pip install pdfx
方法:
- 导入pdfx模块。
- 使用pdfx.PDFx()方法读取 PDF 文件。
- 使用get_metadata()方法获取元数据。
- 使用get_references_as_dict()方法获取 URL。
执行:
步骤 1:导入模块并阅读 PDF 文件。
Python3
# import module
import pdfx
# reading pdf file
pdf = pdfx.PDFx("geeksforgeeks.pdf")
# display
print(pdf)
Python3
pdf.get_metadata()
Python3
pdf.get_references_as_dict()
Python3
# import modules
from tkinter import *
import pdfx
# user defined funtion
def get_info():
pdf = pdfx.PDFx(str(e1.get()))
meta.set(pdf.get_metadata())
url.set(pdf.get_references_as_dict())
# object of tkinter
# and background set for light grey
master = Tk()
master.configure(bg='light grey')
# Variable Classes in tkinter
meta = StringVar()
url = StringVar()
# Creating label for each information
# name using widget Label
Label(master, text="PDF or PDF-URL : ", bg="light grey").grid(row=0, sticky=W)
Label(master, text="Meta information :", bg="light grey").grid(row=3, sticky=W)
Label(master, text="URL information :", bg="light grey").grid(row=4, sticky=W)
# Creating lebel for class variable
# name using widget Entry
Label(master, text="", textvariable=meta,
bg="light grey").grid(row=3, column=1, sticky=W)
Label(master, text="", textvariable=url, bg="light grey").grid(
row=4, column=1, sticky=W)
e1 = Entry(master, width=100)
e1.grid(row=0, column=1)
# creating a button using the widget
# Button that will call the submit function
b = Button(master, text="Show", command=get_info, bg="Blue")
b.grid(row=0, column=2, columnspan=2, rowspan=2, padx=5, pady=5,)
mainloop()
# this code belongs to Satyam kumar (ksatyam858)
输出:
这意味着pdfx.PDFx对象在您记忆中的0x1c189244a88这个位置创建。
第 2 步:从 PDF 获取元数据。
蟒蛇3
pdf.get_metadata()
输出:
{‘Creator’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36’,
‘Producer’: ‘Skia/PDF m85’,
‘CreationDate’: “D:20200911041438+00’00′”,
‘ModDate’: “D:20200911041438+00’00′”,
‘Pages’: 2}
第 3 步:获取 URL 表单 PDF。
蟒蛇3
pdf.get_references_as_dict()
输出:
{'url': ['https://www.geeksforgeeks.org/cookie-policy/',
'https://www.geeksforgeeks.org/privacy-policy/',
'https://www.geeksforgeeks.org/',
'https://www.geeksforgeeks.org/optparse-module-in-python/']}
使用tkinter从 PDF 中提取 URL 和元数据的应用程序:下面的脚本将上述方法实现到图形用户界面中。
蟒蛇3
# import modules
from tkinter import *
import pdfx
# user defined funtion
def get_info():
pdf = pdfx.PDFx(str(e1.get()))
meta.set(pdf.get_metadata())
url.set(pdf.get_references_as_dict())
# object of tkinter
# and background set for light grey
master = Tk()
master.configure(bg='light grey')
# Variable Classes in tkinter
meta = StringVar()
url = StringVar()
# Creating label for each information
# name using widget Label
Label(master, text="PDF or PDF-URL : ", bg="light grey").grid(row=0, sticky=W)
Label(master, text="Meta information :", bg="light grey").grid(row=3, sticky=W)
Label(master, text="URL information :", bg="light grey").grid(row=4, sticky=W)
# Creating lebel for class variable
# name using widget Entry
Label(master, text="", textvariable=meta,
bg="light grey").grid(row=3, column=1, sticky=W)
Label(master, text="", textvariable=url, bg="light grey").grid(
row=4, column=1, sticky=W)
e1 = Entry(master, width=100)
e1.grid(row=0, column=1)
# creating a button using the widget
# Button that will call the submit function
b = Button(master, text="Show", command=get_info, bg="Blue")
b.grid(row=0, column=2, columnspan=2, rowspan=2, padx=5, pady=5,)
mainloop()
# this code belongs to Satyam kumar (ksatyam858)
输出: