问题描述:
WPS和Office Word创建的docx格式文档虽然格式大致相同,但还是有些细节的区别。例如,使用WPS创建的文档中如果包含超链接,可以使用“Python提取Word文档中所有超链接地址和文本”一文中介绍的技术和代码提取,但是同样的代码对于Office Word创建的docx文档无效。本文使用Python配合正则表达式来提取docx文档中的超链接文本和链接地址。
技术原理:
假设有文件“带超链接的文档(Word版).docx”,内容如下,

把该文件复制一份得到“带超链接的文档(Word版) - 副本.docx”,修改扩展名为zip得到文件“带超链接的文档(Word版) - 副本.zip”,打开该文件,结构如下,

进入word子文件夹,结构如下,

双击文件document.xml,内容如下,方框内和箭头处是需要提取的内容,其中箭头处为资源ID,

进入_rels文件夹,有如下文件,

双击打开文件“document.xml.rels,内容如下,红线处类似的地方是需要提取的信息,

参考代码:

运行结果:
