我有一个元素提取器,并且在源中删除它时遇到问题 美丽汤对象
例:
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()
它将删除页面上的第一个特定元素,但在某些情况下可能会出现问题。 它为我解决了问题,希望能启发你