Python 我可以用BeautifulSoup删除脚本标记吗?
是否可以使用BeautifulSoup从HTML中删除标记及其所有内容,还是必须使用正则表达式或其他方法?如中所述,您可以使用extract方法删除与搜索匹配的所有子树Python 我可以用BeautifulSoup删除脚本标记吗?,python,html,beautifulsoup,Python,Html,Beautifulsoup,是否可以使用BeautifulSoup从HTML中删除标记及其所有内容,还是必须使用正则表达式或其他方法?如中所述,您可以使用extract方法删除与搜索匹配的所有子树 >>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'html.parser') >&
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'html.parser')
>>> for s in soup.select('script'):
>>> s.extract()
>>> soup
baba
import BeautifulSoup
a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>")
[x.extract() for x in a.findAll('script')]
为将来可能需要参考的人提供的最新答案: 正确答案是。 . 您可以使用不同的方法,但可以就地分解工作 用法示例:
soup = BeautifulSoup('<p>This is a slimy text and <i> I am slimer</i></p>')
soup.i.decompose()
print str(soup)
#prints '<p>This is a slimy text and</p>'
清除碎屑非常有用,例如,等等。链接要删除的附加标签的最佳方法是什么?现在,如果我一个接一个地重复这个命令,[s.extract for s in soup'script'],然后[s.extract for s in soup'iframe']等等,它就可以工作了,但是如果我像这样链接它们[s.extract for s in soup'iframe','script'],则不行。@Ali您必须使用[s.extract for s in soup['iframe',script]]注意,要使用多个标记,该参数必须是一个list@FábioDiniz我如何提取像‘ababab’这样的东西?是一样的吗?此操作后,soup对象变得无用,再也找不到任何标记。这已经过时,BeautifulSoup现在似乎将字符串格式化为html:baba分解和提取的区别在于后者返回已删除的内容,而前者只是将其销毁。这是对这个问题更准确的回答,但其他方法确实有效。分解不会删除脚本标记的内容,它只删除标记。实际上,根据文档:Tag.Decompose从树中删除标记,然后完全销毁它及其内容:@Vangel抱歉,我想我忘了在我的评论中加上一句话:我相信我是在回应罗兰·皮拉卡斯的评论。考虑到我们可能有几个I标签,并希望删除所有I标签,我们可以类似于上面的@FábioDiniz extract示例[s.分解为汤中的s'I']。分解本身只删除第一次出现的标记。有没有方法删除带有特定类的标记?我不想删除所有具有相同名称的标记,只想删除一个具有特定类的标记块。您所要做的就是选择要调用extract的特定元素。[x.extract for x in a.select'span.className']