如何在Python中提取所有PDF链接(实现代码示例)
本文带你了解如何使用 pikepdf 和 PyMuPDF 库使用 Python 从 PDF 文件中提取链接和 URL。
是否要提取特定 PDF 文件中的 URL?如果是这样,那么你来对地方了。在本教程中,我们将使用Python 中的pikepdf和PyMuPDF库从 PDF 文件中提取所有链接。
【如何在Python中提取所有PDF链接(实现代码示例)】Python如何提取所有PDF链接?我们将使用两种方法从特定的 PDF 文件中获取链接,第一种是提取注释,即标记、注释和注释,你实际上可以单击常规 PDF 阅读器并重定向到你的浏览器,而第二种是提取所有原始文本并使用正则表达式来解析 URL。
首先,让我们安装这些库:
pip3 install pikepdf PyMuPDF
方法一:使用注解提取网址Python提取所有PDF链接的方法解析:在这种技术中,我们将使用 pikepdf 库打开一个 PDF 文件,遍历每个页面的所有注释并查看那里是否有 URL:
import pikepdf # pip3 install pikepdffile = "1810.04805.pdf"
# file = "1710.05006.pdf"
pdf_file = pikepdf.Pdf.open(file)
urls = [
]
# iterate over PDF pages
for page in pdf_file.pages:
for annots in page.get("/Annots"):
uri = annots.get("/A").get("/URI")
if uri is not None:
print("[
+] URL Found:", uri)
urls.append(uri)print("[
*] Total URLs extracted:", len(urls))
我正在测试这个 PDF 文件,但可以随意使用你选择的任何 PDF 文件,只要确保它有一些可点击的链接。
运行该代码后,我得到以下输出:
[
+] URL Found: https://github.com/google-research/bert
[
+] URL Found: https://github.com/google-research/bert
[
+] URL Found: https://gluebenchmark.com/faq
[
+] URL Found: https://gluebenchmark.com/leaderboard
...<
SNIPPED>...
[
+] URL Found: https://gluebenchmark.com/faq
[
*] Total URLs extracted: 30
太棒了,我们已经成功地从那篇 PDF 论文中提取了 30 个 URL。
相关: 如何在 Python 中提取所有网站链接。
方法二:使用正则表达式提取网址Python提取所有PDF链接的方法解析:在本节中,我们将从 PDF 文件中提取所有原始文本,然后使用正则表达式来解析 URL。首先,让我们获取 PDF 的文本版本:
import fitz # pip install PyMuPDF
import re# a regular expression of URLs
url_regex = r"https?:\/\/(www\.)?[
-a-zA-Z0-9@:%._\+~#=\n]{1,256}\.[
a-zA-Z0-9()]{1,6}\b([
-a-zA-Z0-9()@:%_\+.~#?&
//=]*)"
# extract raw text from pdf
file = "1710.05006.pdf"
# file = "1810.04805.pdf"
# open the PDF file
with fitz.open(file) as pdf:
text = ""
for page in pdf:
# extract text of each PDF page
text += page.getText()
现在
text
是我们要解析 URL 的目标字符串,让我们使用re 模块来解析它们:urls = [
]
# extract all urls using the regular expression
for match in re.finditer(url_regex, text):
url = match.group()
print("[
+] URL Found:", url)
urls.append(url)
print("[
*] Total URLs extracted:", len(urls))
输出:
[
+] URL Found: https://github.com/
[
+] URL Found: https://github.com/tensor
[
+] URL Found: http://nlp.seas.harvard.edu/2018/04/03/attention.html
[
+] URL Found: https://gluebenchmark.com/faq.
[
+] URL Found: https://gluebenchmark.com/leaderboard).
[
+] URL Found: https://gluebenchmark.com/leaderboard
[
+] URL Found: https://cloudplatform.googleblog.com/2018/06/Cloud-
[
+] URL Found: https://gluebenchmark.com/
[
+] URL Found: https://gluebenchmark.com/faq
[
*] Total URLs extracted: 9
结论Python如何提取所有PDF链接?这次我们只从同一个 PDF 文件中提取了 9 个 URL,现在这并不意味着第二种方法不准确。此方法仅解析文本形式(不可点击)的 URL。
但是,此方法存在问题,因为 URL 可能包含新行 (
\n
),因此你可能希望在url_regex
表达式中允许它。总而言之,在以上两种Python提取所有PDF链接的方法中,如果你想获得可点击的 URL,你可能需要使用第一种方法,这是更可取的。但是如果你想获得文本形式的 URL,第二个可能会帮助你做到这一点!
如果你想从 PDF 中提取表格或图像,有相关教程:
- 如何在 Python 中提取所有 PDF 链接
- 如何在 Python 中提取 PDF 表格
推荐阅读
- 如何在Python中从PDF中提取表格(代码示例)
- 如何在Python中从PDF中提取图像(代码实现示例)
- 如何在Python中为PDF文件加水印(实现代码示例)
- 如何使用Python突出显示和编辑PDF文件中的文本()
- 如何使用Python从PDF文件中的图像中提取文本()
- 手机WPS对勾如何打出
- 手机WPS如何添加下划线
- 如何安装xp纯净版系统图文详细教程
- android studio 如何设置代码提示
- 如何在Python中将PDF转换为Docx(代码实现示例)