Во-первых, вам нужно искать «Первую абстракцию», когда вы просматриваете теги
, поскольку вам нужен только абзац с «Первой абстракцией».
Поэтому добавьте поиск ( ) метод вашего 'para', чтобы проверить, присутствует ли ожидаемый текст или нет -
paragraphs = html.select("p")
Search = "The first abstraction" # expected text
for para in paragraphs:
px = para.text
if px.find(Search)>-1:
print (para.text)
Это даст вам ожидаемый абзац как -
The history of mathematics can be seen as an ever-increasing series of abstractions. The first abstraction, which is shared by many animals,[14] was probably that of numbers: the realization that a collection of two apples and a collection of two oranges (for example) have something in common, namely quantity of their members.
Так что теперь параграф и название готово. Вам необходимо извлечь header . Сфокусируйтесь на файловой структуре html страницы, которую вы пытаетесь проанализировать (это всегда поможет).
На изображении ниже h2 - это брат p tag (где был найден ваш текст). Читайте о братьях и сестрах здесь .
Таким образом, чтобы перейти к непосредственному предыдущему брату, вы должны дважды вызвать 'previous_sibling' на p tag.
Поскольку h2 является родственным 2 тегами до p , вы можете получить доступ к h2 (который имеет заголовок «History») как -
paragraphs = html.select("p")
for para in paragraphs:
px = para.text
if px.find(Search)>-1:
print (para.text)
print(para.previous_sibling.previous_sibling.previous_sibling.previous_sibling.text)
Будет напечатано -
History