]> git.phdru.name Git - bookmarks_db.git/blobdiff - Robots/parse_html.py
Try BeautifulSoup; if it fails - fall back to HTML Parser.
[bookmarks_db.git] / Robots / parse_html.py
index 3250a0de5980c43a00c6cce8ff5e91a9e5b5471c..fc9514d005e5c02dce4fe4717c7e1732060d7cd6 100755 (executable)
@@ -11,10 +11,16 @@ from m_lib.defenc import default_encoding
 current_charset = default_encoding.replace("windows-", "cp")
 DEFAULT_CHARSET = "cp1251" # Stupid default for Russian Cyrillic
 
+parsers = []
 try:
-   from parse_html_beautifulsoup import parse_html as _parse_html
+   from parse_html_beautifulsoup import parse_html
 except ImportError:
-   from parse_html_htmlparser import parse_html as _parse_html
+   pass
+else:
+   parsers.append(parse_html)
+
+from parse_html_htmlparser import parse_html
+parsers.append(parse_html)
 
 
 import re
@@ -37,9 +43,14 @@ def parse_html(filename, charset=None, log=None):
       except (ValueError, LookupError):
          charset = None         # ...try charset from HTML
 
-   parser = _parse_html(filename, charset)
-   title = parser.title
+   for p in parsers:
+      parser = p(filename, charset)
+      if parser:
+         break
+      else:
+         if log: log("Parser %s failed, trying next one." % p)
 
+   title = parser.title
    if not parser.charset:
       try:
          unicode(title, "ascii")