Я извлекаю текст из HTML-файла, который содержит много тегов div. Однако в некоторых местах есть, скажем, 4 вложенных тега div, и когда я печатаю текст, он печатает его 4 раза.
<div>
<div id="PGBRK" style="TEXT-INDENT: 0pt; WIDTH: 100%; MARGIN-LEFT: 0pt; MARGIN-RIGHT: 0pt">
<div id="PN" style="PAGE-BREAK-AFTER: always; WIDTH: 100%">
<div style="TEXT-ALIGN: center; WIDTH: 100%"><font style="DISPLAY: inline; FONT-FAMILY: Times New Roman; FONT-SIZE: 10pt">27</font></div>
</div>
</div>
</div>
Например, вот если я делаю:
for item in page_soup.find_all('div'):
if "27" in item.text:
print(item)
Он печатает число 27 четыре раза и поэтому портит весь текст.
Как я могу получить свой код, чтобы печатать вложенный текст только один раз?
РЕДАКТИРОВАТЬ 1:
Это хорошо работает для этой части кода. Но, как я уже сказал, в некоторых местах это верно. Например, когда я делаю:
for item in page_soup.find_all('div', recursive = False):
print(item)
Он ничего не печатает. Для справки это - документ, который я пытаюсь очистить.
РЕДАКТИРОВАТЬ 2:
Из данного html я пытаюсь извлечь раздел «ПУНКТ 1А. ФАКТОРЫ РИСКА».
should_print = False
for item in page_soup.find_all('div'):
if "ITEM 1A." in item.text:
should_print = True
elif "ITEM 1B." in item.text:
break
if should_print:
print(item)
Итак, я печатаю все, начиная с пункта 1А. пока не найдет пункт 1B.
Здесь в некоторых местах есть вложенные теги div, которые печатаются с этим фрагментом кода несколько раз.
Если я это сделаю, recursive = False, он ничего не печатает.