删除Python中的多行HTML
我正在尝试剥离特定的HTML文档块,特别是Javascript(删除Python中的多行HTML,python,html,regex,python-3.x,Python,Html,Regex,Python 3.x,我正在尝试剥离特定的HTML文档块,特别是Javascript()和内联CSS()。目前我正在尝试使用re.sub(),但在多行方面没有任何运气。有什么建议吗 import re s = '''<html> <head> <title>Some Template</title> <script type="text/javascript" src="{path to Library}/base.js"></script&
)和内联CSS(
)。目前我正在尝试使用re.sub()
,但在多行方面没有任何运气。有什么建议吗
import re
s = '''<html>
<head>
<title>Some Template</title>
<script type="text/javascript" src="{path to Library}/base.js"></script>
<script type="text/javascript" src="something.js"></script>
<script type="text/javascript" src="simple.js"></script>
</head>
<body>
<script type="text/javascript">
// HelloWorld template
document.write(examples.simple.helloWorld());
</script>
</body>
</html>'''
print(re.sub('<script.*script>', '', s, count=0, flags=re.M))
重新导入
s='''
一些模板
//HelloWorld模板
编写(examples.simple.helloWorld());
'''
打印(re.sub(“”,’,s,计数=0,标志=re.M))
您实际上需要的是点所有修饰符,而不是多行修饰符
print(re.sub(r'(?s)<script\b.*?</script>', '', s))
或者,由于您正在解析和修改HTML,我建议使用类似的HTML解析器 如果您只是想剥离/删除HTML树中的所有
script
标记。您可以使用或
.extract()
将返回提取的标记,而.decompose()
将简单地销毁它
如注释中所述,您可以对HTML树进行其他修改。有关更多信息,请参阅。为什么不选择?@JasonEstibeiro我对BeautifulSoup的理解并不广泛,但我所有的用途都是解析HTML和提取内容。我只想清除其中的一部分,并将其他部分(如粗体和斜体标记)转换为不同的标记。我不知道BS4能做到这一点。好吧,你可以清除HTML的一部分。看看这个,你甚至可以通过改变HTML树的标签名和/或属性来修改它。看一看这个。@JasonEstibeiro哈。。。我会的。在回答的时候把它吐出来,功劳就归你了。
print(re.sub(r'(?s)\s*<script\b.*?</script>', '', s))
from bs4 import BeautifulSoup
soup = BeautifulSoup(s, "html.parser")
for i in soup('script'):
i.decompose()
print(soup)