Как спарить только несколько нужных тегов в правильном порядке BeautifulSoup

Имеется html документ, из которого мне нужно получить текст и картинки. Получить их по отдельности особой сложности не вызывает, но мне нужно спарсить их в естественном порядке.
То есть если последовательность:

<p></p>
<p></p>
<img>
<p></p>

то мне нужно спарсить их именно в такой последовательности.

Разумеется, в документе огромное количество других тегов и не такая примитивная вложенность как в примере, то есть вариант спарсить всё, а потом убрать поштучно ненужное рассматриваю как крайний.

То есть вопрос в том, Как спарсить несколько разных тегов в том порядке, в котором они на странице?


Ответы (2 шт):

Автор решения: Максим Доценко

если структура дом элементов такая

<div class="class">
<p></p>
<p></p>
<img>
<p></p>
</div>

то можно привязаться к диву,

a = soup.find("div", class_="class")

так же из дива можешь получить отдельно элементы, если понадобятся, именно этого блока

b = a.find_all('p')
→ Ссылка
Автор решения: Lumxi

Ответ

    for elem in section:
        tags = section.find_all(['p', 'img'])
        for tag in tags:
            print(tag)

→ Ссылка