#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-строка, указанная в вашем вопросе.