X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=parse_html%2Fbkmk_ph_beautifulsoup.py;h=a0ef6af76a5c78dc061d24acbf95498b44912cec;hb=80054d3bdcbde67d3b941e0b69b55ca4998f4673;hp=e02081b3127d7e96ee0c060d09064c8bb40d9888;hpb=338c964afba3651bd8fe6318644c0fcabb66cc3b;p=bookmarks_db.git diff --git a/parse_html/bkmk_ph_beautifulsoup.py b/parse_html/bkmk_ph_beautifulsoup.py index e02081b..a0ef6af 100644 --- a/parse_html/bkmk_ph_beautifulsoup.py +++ b/parse_html/bkmk_ph_beautifulsoup.py @@ -3,11 +3,8 @@ 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) 2007-2011 PhiloSoft Design" +__copyright__ = "Copyright (C) 2007-2012 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['parse_html'] @@ -18,6 +15,7 @@ from sgmllib import SGMLParser, SGMLParseError from BeautifulSoup import BeautifulSoup, CData from .bkmk_ph_util import HTMLParser +DEFAULT_CHARSET = "cp1251" # Stupid default for Russian Cyrillic # http://groups.google.com/group/beautifulsoup/browse_thread/thread/69093cb0d3a3cf63 class BadDeclParser(BeautifulSoup): @@ -86,18 +84,16 @@ def parse_html(filename, charset=None, log=None): # Lookup TITLE in the root title = root.title - if title is None: - return None - - if title.string: - title = title.string - else: - parts = [] - for part in title: - if not isinstance(part, basestring): - part = unicode(part) - parts.append(part.strip()) - title = ''.join(parts) + if title is not None: + if title.string: + title = title.string + else: + parts = [] + for part in title: + if not isinstance(part, basestring): + part = unicode(part) + parts.append(part.strip()) + title = ''.join(parts) meta = head.find(_find_contenttype, recursive=False) if meta: @@ -114,7 +110,7 @@ def parse_html(filename, charset=None, log=None): else: meta_charset = False - if _charset or meta_charset: + if title and (_charset or meta_charset): title = title.encode(_charset or meta_charset) meta = head.find(_find_refresh, recursive=False) @@ -129,6 +125,8 @@ 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) def _find_contenttype(Tag):