Как извлечь все теги из тега html с помощью Beautifulsoup - PullRequest
0 голосов
/ 07 мая 2019

Я пишу общий html-парсер и хочу иметь возможность извлечь все теги из данного тега. Поскольку это общий синтаксический анализатор, внешние теги могут содержать один или несколько внутренних тегов, и они могут быть просто любым HTML-тегом, поэтому я не могу использовать такие методы, как find. Я также пытался использовать .contents, но он возвращает результат в виде списка, но я просто хочу, чтобы теги были такими, какие они есть, чтобы их можно было затем анализировать как теги bs4.

Например: с учетом следующего HTML:

<tr><th>a</th><th>b</th></tr>

Мне нужно извлечь следующее, гарантируя, что он по-прежнему имеет тип тега bs4

<th>a</th><th>b</th>

1 Ответ

0 голосов
/ 10 мая 2019

Почему бы не использовать метод find_all() без аргументов?

from bs4 import BeautifulSoup as soup

html = """<div><tr><th>a</th><th>b</th></tr></div>"""

page = soup(html,"html.parser")

div = page.find('div')

print('Get all tag occurences')
print(div.find_all())

print('Get only the inside tag, without duplicate')
print(div.find_all()[0])

ВЫВОД:

Get all tag occurences
[<tr><th>a</th><th>b</th></tr>, <th>a</th>, <th>b</th>]

Get only the inside tag, without duplicate
<tr><th>a</th><th>b</th></tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...