如何使用python从word文档中提取所有超链接及其文本

问题描述 投票:0回答:1

我已经尽力提取文档中的所有超链接及其相关文本。另外,更新“文本”与某些关键字匹配的链接。几天后,我可以通过以下代码提取所有超链接。

import docx
from docx import Document
from docx.opc.constants import RELATIONSHIP_TYPE as RT

document = Document('test.docx')
rels = document.part.rels

for rel in rels:
    if rels[rel].reltype == RT.HYPERLINK:
        hyperlink_rel = rels[rel]
        hyperlink = hyperlink_rel._target
        print(hyperlink)

document.save("test.docx")

 

但我无法获取文本并应用条件。这就是我想要的

for rel in rels:
    if rels[rel].reltype == RT.HYPERLINK:
        hyperlink_rel = rels[rel]
        hyperlink = hyperlink_rel._target
        text = hyperlink_rel._text
        if text == "jira link":
            hyperlink_rel._target = "www.example.com"

首先我需要获取所有超链接和相关文本。然后根据条件用新的 URL 更新超链接。

为了更好地理解,假设我的文档中有三个超链接:Jira1、Jira2 和 Jira3。现在我想获取所有可能指向“www.jira.com”的三个超链接以及超链接的名称:Jira1、Jir2 和 Jira3。

python ms-word hyperlink docx python-docx
1个回答
0
投票

尝试一下,您可以将打印调整为变量或任何输出

from docx import Document
  
doc = Document(<insert_full_path>)
para_lines = 0

print("[")
for line in doc.paragraphs:
    if len(line.hyperlinks) > 0 :
        for link in line.hyperlinks:
            print("{")
            print(f"line: {para_lines},")
            print(f"url_text: {link.text},")
            print(f"url_raw: {link.address},")
            print(f"full_text: {line.text},")
            print("}")
            print(f",")
        
    para_lines += 1
print("]")
© www.soinside.com 2019 - 2024. All rights reserved.