📜  在Python中从 PDF 中提取超链接

📅  最后修改于: 2022-05-13 01:55:16.338000             🧑  作者: Mango

在Python中从 PDF 中提取超链接

先决条件:PyPDF2,正则表达式

在本文中,我们将在Python中从 PDF 中提取超链接。它可以通过不同的方式完成:

  • 使用 PyPDF2
  • 使用 pdfx

方法一:使用PyPDF2。

PyPDF2 是一个构建为 PDF 工具包的Python库。它能够提取文档信息等等。

方法:

  • 阅读PDF文件并将其转换为文本
  • 使用正则表达式从文本中获取 URL

让我们逐步实现这个模块:

第 1 步:打开并阅读 PDF 文件。

Python3
import PyPDF2
  
  
file = "Enter PDF File Name"
  
pdfFileObject = open(file, 'rb')
   
pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
   
for page_number in range(pdfReader.numPages):
      
    pageObject = pdfReader.getPage(page_number)
    pdf_text = pageObject.extractText()
    print(pdf_text)
      
pdfFileObject.close()


Python3
# Import Module
import PyPDF2
import re 
  
# Enter File Name
file = "Enter PDF File Name"
  
# Open File file
pdfFileObject = open(file, 'rb')
   
pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
  
# Regular Expression (Get URL from String)
def Find(string): 
    
    # findall() has been used 
    # with valid conditions for urls in string 
    regex = r"(https?://\S+)"
    url = re.findall(regex,string)
    return [x for x in url] 
    
# Iterate through all pages
for page_number in range(pdfReader.numPages):
      
    pageObject = pdfReader.getPage(page_number)
      
    # Extract text from page
    pdf_text = pageObject.extractText()
      
    # Print all URL
    print(Find(pdf_text))
      
# CLost the PDF 
pdfFileObject.close()


Python3
# Import Module
import pdfx 
  
# Read PDF File
pdf = pdfx.PDFx("File Name") 
  
# Get list of URL
print(pdf.get_references_as_dict())


输出:

第 2 步:使用正则表达式从字符串中查找 URL

蟒蛇3

# Import Module
import PyPDF2
import re 
  
# Enter File Name
file = "Enter PDF File Name"
  
# Open File file
pdfFileObject = open(file, 'rb')
   
pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
  
# Regular Expression (Get URL from String)
def Find(string): 
    
    # findall() has been used 
    # with valid conditions for urls in string 
    regex = r"(https?://\S+)"
    url = re.findall(regex,string)
    return [x for x in url] 
    
# Iterate through all pages
for page_number in range(pdfReader.numPages):
      
    pageObject = pdfReader.getPage(page_number)
      
    # Extract text from page
    pdf_text = pageObject.extractText()
      
    # Print all URL
    print(Find(pdf_text))
      
# CLost the PDF 
pdfFileObject.close()

输出:

['https://docs.python.org/', 'https://pythonhosted.org/PyPDF2/', 'https://www.geeksforgeeks.org/']

方法二:使用pdfx。

在这种方法中,我们将使用 pdfx 模块。 pdfx 模块用于从给定的 PDF 或 PDF URL 中提取 URL、元数据和纯文本。特点: 从给定的 PDF 中提取参考和元数据。

pip install pdfx

下面是实现:

蟒蛇3

# Import Module
import pdfx 
  
# Read PDF File
pdf = pdfx.PDFx("File Name") 
  
# Get list of URL
print(pdf.get_references_as_dict())

输出:-

{'url': ['https://www.geeksforgeeks.org/',
  'https://docs.python.org/',
  'https://pythonhosted.org/PyPDF2/',
  'GeeksforGeeks.org']}