BeautifulSoup4 – Как мне получить детей следующего брата или сестры? ⇐ Python
BeautifulSoup4 – Как мне получить детей следующего брата или сестры?
Я пытаюсь запрограммировать приложение, которое будет собирать некоторые финансовые формы из SEC, которые часто имеют другую структуру, что может усложнить задачу. В результате я пытаюсь обобщить свой парсер. Многие мои проблемы сводятся к тому, чтобы найти местоположение этого текста, а затем взять следующий доступный текст. Это означает проверку всех дочерних элементов на наличие текста, а если его нет, то перемещение DOM к следующему родителю(ям) и последующую проверку их дочерних элементов. Однако у меня возникли проблемы с захватом детей следующего родителя для анализа. Этот вопрос сводится к следующему: «Как мне получить детей следующего брата или сестры?»
Мой код
запросы на импорт из bs4 импорт BeautifulSoup импортировать повторно заголовки = { 'Агент пользователя': '[ВАША ЭЛЕКТРОННАЯ ПОЧТА]', «Принять-кодирование»: «gzip, выкачать», «Хост»: «www.sec.gov» } url = 'https://www.sec.gov/Archives/edgar/data ... 132023.htm' r = Requests.get(url, заголовки=заголовки) суп = BeautifulSoup(r.content, 'lxml') name_reporting_person = Нет report_person_found = Ложь report_person_location = Soup.find('td', string=re.compile('ИМЯ ЛИЦА, СООБЩАЮЩЕГО')) # Попробуйте всех братьев и сестер для элемента в report_person_location.next_siblings: print("ТЕКСТ: " + элемент.текст) если element.text != ' ' или element.text != '': name_reporting_person = element.text report_person_found = Истина перерыв родитель = report_person_location.parent.nextSibling пока не report_person_found: # В противном случае попробуйте детей следующих родителей - ПРОБЛЕМА ЗДЕСЬ. .дети не допускаются для элемента в родительском.детях: если element.text != ' ' или element.text != '': print("ТЕКСТ: " + элемент.текст) name_reporting_person = element.text report_person_found = Истина перерыв родитель = родительский.next_sibling Включить HTML (2 примера):
1 1 ИМЯ ЛИЦА, СООБЩАЮЩЕГО ОТЧЕТ RC VENTURES LLC 2 1&# 8194;
Имена лиц, сообщивших
Bain Capital Life Sciences Fund II, LP
2
Коротко говоря, HTML сильно различается в зависимости от страницы, но я считаю, что его по-прежнему можно анализировать с использованием родительских и дочерних элементов, но дочерние элементы у меня не работают.
Я получаю неразрешенную ошибку Неразрешенная ссылка на атрибут «дети» для класса «PageElement» . Я не знаю, что делать, поскольку findChildren() и .children не распознаются. Как я могу получить дочерние элементы каждого из следующих родителей? Я знаю, что мне не нужна рекурсия, но find_all(recursive=False) тоже не распознается. Что мне не хватает? Спасибо
Я пытаюсь запрограммировать приложение, которое будет собирать некоторые финансовые формы из SEC, которые часто имеют другую структуру, что может усложнить задачу. В результате я пытаюсь обобщить свой парсер. Многие мои проблемы сводятся к тому, чтобы найти местоположение этого текста, а затем взять следующий доступный текст. Это означает проверку всех дочерних элементов на наличие текста, а если его нет, то перемещение DOM к следующему родителю(ям) и последующую проверку их дочерних элементов. Однако у меня возникли проблемы с захватом детей следующего родителя для анализа. Этот вопрос сводится к следующему: «Как мне получить детей следующего брата или сестры?»
Мой код
запросы на импорт из bs4 импорт BeautifulSoup импортировать повторно заголовки = { 'Агент пользователя': '[ВАША ЭЛЕКТРОННАЯ ПОЧТА]', «Принять-кодирование»: «gzip, выкачать», «Хост»: «www.sec.gov» } url = 'https://www.sec.gov/Archives/edgar/data ... 132023.htm' r = Requests.get(url, заголовки=заголовки) суп = BeautifulSoup(r.content, 'lxml') name_reporting_person = Нет report_person_found = Ложь report_person_location = Soup.find('td', string=re.compile('ИМЯ ЛИЦА, СООБЩАЮЩЕГО')) # Попробуйте всех братьев и сестер для элемента в report_person_location.next_siblings: print("ТЕКСТ: " + элемент.текст) если element.text != ' ' или element.text != '': name_reporting_person = element.text report_person_found = Истина перерыв родитель = report_person_location.parent.nextSibling пока не report_person_found: # В противном случае попробуйте детей следующих родителей - ПРОБЛЕМА ЗДЕСЬ. .дети не допускаются для элемента в родительском.детях: если element.text != ' ' или element.text != '': print("ТЕКСТ: " + элемент.текст) name_reporting_person = element.text report_person_found = Истина перерыв родитель = родительский.next_sibling Включить HTML (2 примера):
1 1 ИМЯ ЛИЦА, СООБЩАЮЩЕГО ОТЧЕТ RC VENTURES LLC 2 1&# 8194;
Имена лиц, сообщивших
Bain Capital Life Sciences Fund II, LP
2
Коротко говоря, HTML сильно различается в зависимости от страницы, но я считаю, что его по-прежнему можно анализировать с использованием родительских и дочерних элементов, но дочерние элементы у меня не работают.
Я получаю неразрешенную ошибку Неразрешенная ссылка на атрибут «дети» для класса «PageElement» . Я не знаю, что делать, поскольку findChildren() и .children не распознаются. Как я могу получить дочерние элементы каждого из следующих родителей? Я знаю, что мне не нужна рекурсия, но find_all(recursive=False) тоже не распознается. Что мне не хватает? Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение