BeautifulSoup размещает контент вне реального элемента при чтении или разборе - PullRequest
0 голосов
/ 10 ноября 2019

Я должен проанализировать содержимое последнего dd и взять его текст в качестве списка его дочерних p-текстов. Смотрите скриншот ниже: The parse target Я использовал следующий код:

with open('strange_dl.html') as f:
    soup = BeautifulSoup(f, 'html.parser')
    target=soup.dl.find_all('dd')[-1]
    p_elements=target.find_all('p')

Неожиданно он возвращает результаты, что на скриншоте ниже: Bug number one Таким образом, вы можете видеть, что он возвращает не все действительные p, а также извилил второй элемент p.

Когда я начал копать глубже, я обнаружил, что внутри него есть поврежденный html: enter image description here

Вы можете воспроизвести его с Beautifulsoup4 от Анаконды и фрагмента HTML ниже:

	<dl data-test="memory-book-bank-details" class="definition-list padding-default">
												<dt class="font-bold color-text">Полное наименование</dt>
							<dd>АКБ «ЧУВАШКРЕДИТПРОМБАНК» ПАО</dd>
						
												<dt class="font-bold color-text">Город</dt>
							<dd data-test="memory-book-bank-city">Чебоксары</dd>
						
												<dt class="font-bold color-text">Номер лицензии</dt>
							<dd data-test="memory-book-bank-license">
								1280
																&nbsp;|&nbsp;
									<a href="http://www.cbr.ru/credit/coinfo.asp?id=970000003"
									   target="_blank" rel="nofollow">Информация на сайте ЦБ</a>
														</dd>
						
												<dt class="font-bold color-text">Причина</dt>
							<dd>отзыв лицензии</dd>
						
												<dt class="font-bold color-text">Дата</dt>
							<dd>07.11.2019</dd>
						
												<dt class="font-bold color-text">Причина отзыва лицензии</dt>
							<dd class="margin-bottom-zero"><p>Банк России принял решение в соответствии с п.&nbsp;п. 6 и 6.1 части первой ст.&nbsp;20 Федерального закона &laquo;О банках и банковской деятельности&raquo;2, руководствуясь тем, что Чувашкредитпромбанк:

	<p>&mdash; допускал нарушения законодательства и нормативных актов Банка России в области противодействия легализации (отмыванию) доходов, полученных преступным путем, и финансированию терроризма. Кредитная организация представляла в уполномоченный орган неполную и некорректную информацию, в том числе по операциям, подлежащим обязательному контролю;
	</br>&mdash; проводил сомнительные операции, связанные с продажей наличной иностранной валюты;
	</br>&mdash; допускал нарушения порядка расчета капитала и занижал величину необходимых к формированию резервов на возможные потери. По оценке Банка России, отражение в финансовой отчетности достоверной величины капитала и реальных кредитных рисков, принимаемых кредитной организацией, приводит к значительному (более 35%) снижению размера собственных средств банка. В результате возникают основания для осуществления мер по предупреждению несостоятельности (банкротства) и создается реальная угроза интересам кредиторов и вкладчиков;
	</br>&mdash; нарушал федеральные законы, регулирующие банковскую деятельность, а также нормативные акты Банка России, в связи с чем регулятор в течение последних 12 месяцев неоднократно применял к нему меры, в том числе вводил ограничения на привлечение денежных средств физических лиц.

	<p>На балансе Чувашкредитпромбанка образовался значительный объем корпоративных кредитов низкого качества. Банк России направил в адрес кредитной организации предписание с требованиями об адекватной оценке принимаемых рисков и отражении в отчетности своего реального финансового положения.</dd>
										</dl>
...