, , , lxml, HTML. (lxml , BeautifulSoup, .)
, , . , HTML-, , , , .
script
HTMLParser lxml:
from lxml import etree
from StringIO import StringIO
broken_html = '''
<html>
<head>
<title>Regular Expression HOWTO — Python v2.7.1 documentation</title>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.7.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
'''
parser = etree.HTMLParser()
tree = etree.parse(StringIO(broken_html), parser)
for s in tree.xpath('//script'):
s.getparent().remove(s)
print etree.tostring(tree.getroot(), pretty_print=True)
:
<html>
<head>
<title>Regular Expression HOWTO — Python v2.7.1 documentation</title>
</head>
</html>
lxml
, , , <script>, , Cleaner lxml , :
from lxml.html.clean import Cleaner
broken_html = '''
<html>
<head>
<title>Regular Expression HOWTO — Python v2.7.1 documentation</title>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.7.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
'''
cleaner = Cleaner(page_structure=False)
print cleaner.clean_html(broken_html)
... :
<html><head><title>Regular Expression HOWTO — Python v2.7.1 documentation</title></head></html>
(nb) nothtml html - , 1 , <html><body>, 2 , , :))