如何在源码HTML代码中分解美丽汤标签副本?



我有一个元素提取器,并且在源中删除它时遇到问题 美丽汤对象

例:

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对象

现在我找到了解决这个问题的一种解决方案

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()

它将删除页面上的第一个特定元素,但在某些情况下可能会出现问题。 它为我解决了问题,希望能启发你

最新更新