Вы можете выполнить это, используя BeautifulSoup. У вас есть два варианта, в зависимости от того, что вы хотите сделать с элементом, который вы удаляете.
Настройка:
from bs4 import BeautifulSoup
html_doc = """
<html>
<header>
<title>A test</title>
</header>
<body>
<table>
<tr>
<td id="MenuTD" style="vertical-align: top;">
Stuff here <a>with a link</a>
<p>Or paragraph tags</p>
<div>Or a DIV</div>
</td>
<td>Another TD element, without the MenuTD id</td>
</tr>
</table>
</body>
</html>
"""
soup = BeautifulSoup(html_doc)
- Вариант 1 является использование метода
extract()
. Используя это, вы сохраните копию извлеченного элемента, так что вы можете использовать его позже в вашем приложении:
Код:
menu_td = soup.find(id="MenuTD").extract()
В этот момент элемент вы удаляете были сохранены к переменной menu_td
. Делай то, что ты хочешь. нет Ваш HTML в переменной soup
больше не содержит ваш элемент, хотя:
print(soup.prettify())
Выходы:
<html>
<header>
<title>
A test
</title>
</header>
<body>
<table>
<tr>
<td>
Another TD element, without the MenuTD id
</td>
</tr>
</table>
</body>
</html>
Все в MenuTD
элемент был удален. Вы можете видеть, что все еще находится в переменной menu_td
хотя:
print(menu_td.prettify())
Выходы:
<td id="MenuTD" style="vertical-align: top;">
Stuff here
<a>
with a link
</a>
<p>
Or paragraph tags
</p>
<div>
Or a DIV
</div>
</td>
- Вариант 2: Использование
.decompose()
. Если вам не нужна копия удаленного элемента, вы можете использовать эту функцию, чтобы удалить ее из документа и уничтожить содержимое.
Код:
soup.find(id="MenuTD").decompose()
Он ничего не возвращает (в отличие от .extract()
). Это, однако, удалить элемент из документа:
print(soup.prettify())
Выходы:
<html>
<header>
<title>
A test
</title>
</header>
<body>
<table>
<tr>
<td>
Another TD element, without the MenuTD id
</td>
</tr>
</table>
</body>
</html>