]> git.phdru.name Git - bookmarks_db.git/blobdiff - parse_html/bkmk_ph_lxml.py
Cleanup code: use 4 spaces
[bookmarks_db.git] / parse_html / bkmk_ph_lxml.py
index 26c92680b49c76b4751917679b29e61436277747..1fa47917deaf81fb6b40dbb413498e45dec7eadc 100644 (file)
@@ -1,21 +1,22 @@
 """HTML Parser using lxml.html
 
 This file is a part of Bookmarks database and Internet robot.
+
 """
 
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2010-2012 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2010-2017 PhiloSoft Design"
 __license__ = "GNU GPL"
 
 __all__ = ['parse_html']
 
 
-from lxml.html import parse
+from lxml.html import fromtring
 from .bkmk_ph_util import HTMLParser
 
 
-def parse_html(filename, charset=None, log=None):
-    html_tree = parse(filename)
+def parse_html(html_text, charset=None, log=None):
+    html_tree = fromtring(html_text)
 
     if html_tree.getroot() is None:
         return None
@@ -23,8 +24,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:
@@ -37,10 +36,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:
@@ -57,4 +59,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)