Как разложить копию тега BeautifulSoup в исходном HTML-коде? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть средство извлечения элементов, и у меня возникла проблема с его удалением из исходного объекта BeautifulSoup

Пример:

def extract_element(soup: bs4.BeautifulSoup) -> bs4.Tag:
    tag = soup.select('my-css-selector-or-something-else')
    return copy.copy(tag)


## main body code
soup = bs4.BeautifulSoup('my-html-code', 'my-parser')
ignore_tag = extract_element(soup)
if ignore_tag is not None:
     ignore_tag.decompose()   # doesn't modifies soup object

extract_element содержит сложную логику и использует ее для извлечения элементов, поэтомуон не должен изменять существующий soup объект в теле функции

1 Ответ

0 голосов
/ 19 июня 2018

Пока я нашел одно решение этой проблемы

def extract_element(soup: bs4.BeautifulSoup) -> bs4.Tag:
tag = soup.select('my-css-selector-or-something-else')
return copy.copy(tag)


## main body code
soup = bs4.BeautifulSoup('my-html-code', 'my-parser')
ignore_tag = extract_element(soup)
if ignore_tag is not None:
     soup.find(attrs=ignore_tag.attrs).decompose()

Он удалит первый конкретный элемент на странице, но в некоторых случаях могут быть проблемы.Это решило проблему для меня, я надеюсь, что это вдохновит вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...