from copy import deepcopy from django.templatetags.static import static from lxml import html def lazy_load(tree): blank = static('blank.gif') for img in tree.xpath('.//img'): src = img.get('src', '') if src.startswith('data') or '-math' in img.get('class', ''): continue noscript = html.Element('noscript') copy = deepcopy(img) copy.tail = '' noscript.append(copy) img.addprevious(noscript) img.set('data-src', src) img.set('src', blank) img.set('class', img.get('class') + ' unveil' if img.get('class') else 'unveil')