如果字符串包含html代码,如何用python检测?

如何检测字符串中是否包含一个html(可以是html4,html5,只是部分文本中的html)?我不需要HTML的版本,而是如果字符串只是一个文本或它包含一个HTML.文本通常是多行,也是空行

更新:

示例输入:

HTML:

<head><title>I'm title</title></head>
Hello, <b>world</b>

非HTML:

<ht fldf d><
<html><head> head <body></body> html

解决方法:

您可以使用HTML解析器,例如BeautifulSoup.请注意,它确实最好地尝试解析HTML,即使是破坏的HTML,根据underlying parser,它可能非常宽松而且不是很宽松:

>>> from bs4 import BeautifulSoup
>>> html = """<html>
... <head><title>I'm title</title></head>
... </html>"""
>>> non_html = "This is not an html"
>>> bool(BeautifulSoup(html, "html.parser").find())
True
>>> bool(BeautifulSoup(non_html, "html.parser").find())
False

这基本上试图在字符串中找到任何html元素.如果找到 – 结果为True.

HTML片段的另一个例子:

>>> html = "Hello, <b>world</b>"
>>> bool(BeautifulSoup(html, "html.parser").find())
True

或者,您可以使用lxml.html

>>> import lxml.html
>>> html = 'Hello, <b>world</b>'
>>> non_html = "<ht fldf d><"
>>> lxml.html.fromstring(html).find('.//*') is not None
True
>>> lxml.html.fromstring(non_html).find('.//*') is not None
False
上一篇:[React] Detect user activity with a custom useIdle React Hook


下一篇:vscode 设置代码格式化缩进为2个空格