我已经基于一个属性使用find_all in Beautiful soup创建了一个列表。如何返回我想要的节点?

2024-09-30 01:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个MS word文档模板,它具有结构化文档标记,包括重复部分。我正在使用Python脚本来提取重要部分并将它们发送到数据帧。我的脚本在我尝试过的80%的文档上都能正常工作,但我经常失败。问题是在找到第一个重复部分时,我一直在执行以下操作:

    from bs4 import BeautifulSoup as BS
    soup = BS(f, 'xml')  # entire xml; file is called soup
    soupdocument=soup.document  #document only child node of soup  
    soupbody=soupdocument.body  # body is the only child node of document 
    ODR=soupbody.contents[5]  

这通常是可行的,但是有些用户在文档中未锁定的某些位置按了enter键。我知道这个问题应该通过不选择soupbody的第五个元素来解决

    soupbody.find_all({tag})
><w:tag w:val="First Name"/>,
 <w:tag w:val="Last Name"/>,
 <w:tag w:val="Position"/>,
 <w:tag w:val="Phone Number"/>,
 <w:tag w:val="Email"/>,
 <w:tag w:val="ODR Repeating Section"/>,

上面是返回内容的部分列表,实际列表中有几十个标记,有些重复。我想要的部分是我上面列出的最后一个部分,通常但不总是在第一个代码块中找到。我相信我可以在find_all({tag:SOMETHING}})之后放一个冒号。我尝试过剪切和粘贴“ODR Repeating Section”的所有不同部分,但它不起作用。找到此部分的正确方法是什么


Tags: 文档标记脚本childonlybsistag

热门问题