Я создал список, используя find_all в Красивый суп на основе атрибута.Как мне вернуть нужный мне узел? - PullRequest
0 голосов
/ 29 июня 2019

У меня есть шаблон документа 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 Repeating Section", но он не работает. Как правильно найти этот раздел?

1 Ответ

0 голосов
/ 29 июня 2019

Привет, возможно, укажите атрибут, который вы ищете, в дополнение к имени тега?

tags = soup.findAll('tag', {'val" : 'ODR Repeating Section'})
...