如何检测字符串中是否包含一个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