我有一个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]
通常可以使用,但是某些用户设法在文档中未锁定的某些位置按回车键。我知道应该通过不选择汤体的第5个元素来解决该问题。
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重复节”的所有不同部分,但这是行不通的。找到此节的正确方法是什么?>
答案 0 :(得分:0)
您好,也许除了标记名称之外,还要指定您要搜索的属性?
tags = soup.findAll('tag', {'val" : 'ODR Repeating Section'})