X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=parse_html%2Fbkmk_ph_etreetidy.py;h=09aa2a3773642cf08df73e100206d782602e8685;hb=c88cb7a75e7caf1d67466cfa107981d95115fa0c;hp=893229d4e3d440af76835b4d4ac6c2403fd9a187;hpb=338c964afba3651bd8fe6318644c0fcabb66cc3b;p=bookmarks_db.git diff --git a/parse_html/bkmk_ph_etreetidy.py b/parse_html/bkmk_ph_etreetidy.py index 893229d..09aa2a3 100644 --- a/parse_html/bkmk_ph_etreetidy.py +++ b/parse_html/bkmk_ph_etreetidy.py @@ -1,13 +1,11 @@ """HTML Parser using ElementTree+TidyLib. This file is a part of Bookmarks database and Internet robot. + """ -__version__ = "$Revision$"[11:-2] -__revision__ = "$Id$"[5:-2] -__date__ = "$Date$"[7:-2] __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2010, 2011 PhiloSoft Design" +__copyright__ = "Copyright (C) 2010-2017 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['parse_html'] @@ -17,9 +15,9 @@ from elementtidy import TidyHTMLTreeBuilder from .bkmk_ph_util import HTMLParser -def parse_html(filename, charset=None, log=None): +def parse_html(html_text, charset=None, log=None): try: - html_tree = TidyHTMLTreeBuilder.parse(filename) + html_tree = TidyHTMLTreeBuilder.parseString(html_text) except: return None @@ -32,8 +30,6 @@ def parse_html(filename, charset=None, log=None): title = html_tree.findtext('head/title') if title is None: title = html_tree.findtext('title') - if title is None: - return None meta = html_tree.findall('head/meta') for m in meta: @@ -46,10 +42,13 @@ def parse_html(filename, charset=None, log=None): break except IndexError: meta_charset = False + elif m.get('charset', ''): + meta_charset = m.get('charset').lower() + break else: meta_charset = False - if charset or meta_charset: + if title and (charset or meta_charset): title = title.encode(charset or meta_charset) for m in meta: @@ -66,4 +65,6 @@ def parse_html(filename, charset=None, log=None): else: icon = None + if (title is None) and (refresh is None) and (icon is None): + return None return HTMLParser(charset, meta_charset, title, refresh, icon)