Как мне найти блок, содержащий 2 тега в цикле?

#python #beautifulsoup

#python #beautifulsoup

Вопрос:

Я хочу очистить содержимое следующего HTML-кода и хочу захватить h2, а затем каждый

до следующего h2 с использованием beautiful soup. Возможно ли это?

 <hr /><h2>California</h2>
<p><strong>Term 1:</strong> (Eastern division): Tuesday 29 January — 
Friday 
12 April</p>
<p><strong>Term 1:</strong> (Western division): Tuesday 5 February — 
Friday 
12 April</p>
<p><strong>Term 2</strong><strong>:</strong> Monday 29 April — Friday 5 
July</p>
<p><strong>Term 3:</strong> Monday 22 July — Friday 27 September</p>
<p><strong>Term 4:</strong> Monday 14 October — Friday 20 December</p>

<hr /><h2>New York</h2>
<p><strong>Term 1</strong>: Tuesday 29 January — Friday 12 April</p>
<p><strong>Term 2:</strong> Monday 29 April — Friday 5 July</p>
<p><strong>Term 3</strong>: Monday 22 July — Friday 27 September</p>
<p><strong>Term 4</strong>: Monday 14 October — Friday 13 December</p>
</pre>

soup = BeautifulSoup(page.text, 'html.parser')
for each_div in soup.findAll(['h2', 'p']):
myval = str(each_div.prettify("ascii"))
  

Я хочу получить следующие результаты для каждого состояния

Комментарии:

1. Содержимое HTML-кода приведено ниже непосредственно перед списком. <класс div=»содержимое»> <класс div= «поле-имя-поля-тело поля-тип-текст-длинное поле-метка-скрытое»><класс div=»элементы поля»><класс div=»четный элемент поля»>

2. Ваш вопрос, похоже, был прерван в конце; каков ваш ожидаемый результат?

Ответ №1:

Вот кое-что, с чем, я думаю, вы должны уметь работать. Список capture отслеживает элементы, которые вы хотите для каждого заголовка. Код использует find_next_siblings метод, чтобы получить все родственные элементы в дереве и выполнить итерацию по ним. Когда он достигает другого h2 тега, он прерывается.

 soup = BeautifulSoup(content, 'html.parser')    
for head in soup.find_all('h2'):
    capture = [head]
    for sibling in head.find_next_siblings():
        if sibling.name == 'h2':
            break
        capture  = [sibling]
  

Я бы просто изменил способ сохранения захваченных тегов.

Редактировать: Забыл упомянуть, что content это html-строка, указанная в вашем вопросе.