X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=parse_html%2Fbkmk_ph_htmlparser.py;h=c0f89b411d688bc99ecaab1a377c80abb36b6891;hb=efd4317f928f77d86f54162a04fa8272b71b355b;hp=70cba32d9073e2aa8f15389f69f8636eb0061b6f;hpb=91ef9925aec1c098bb428d8ba778d64ef10c16cf;p=bookmarks_db.git diff --git a/parse_html/bkmk_ph_htmlparser.py b/parse_html/bkmk_ph_htmlparser.py index 70cba32..c0f89b4 100644 --- a/parse_html/bkmk_ph_htmlparser.py +++ b/parse_html/bkmk_ph_htmlparser.py @@ -5,13 +5,16 @@ This file is a part of Bookmarks database and Internet robot. """ __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 1997-2017 PhiloSoft Design" +__copyright__ = "Copyright (C) 1997-2023 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['parse_html'] -from HTMLParser import HTMLParseError +try: + from HTMLParser import HTMLParseError +except ImportError: + class HTMLParseError(Exception): pass from m_lib.net.www.html import HTMLParser as _HTMLParser @@ -47,8 +50,10 @@ class HTMLParser(_HTMLParser): if (not self.charset) and (http_equiv == "content-type"): try: - # extract charset from "text/html; foo; charset=UTF-8, bar; baz;" - self.charset = content.lower().split('charset=')[1].split(';')[0].split(',')[0] + # extract charset from + # "text/html; foo; charset=UTF-8, bar; baz;" + self.charset = content.lower().split('charset=')[1].\ + split(';')[0].split(',')[0] # Remember that the charset was retrieved from # META tag, not from the Content-Type header self.meta_charset = 1 @@ -62,7 +67,7 @@ class HTMLParser(_HTMLParser): self.accumulator = '' def end_title(self): - if not self.title: # use only the first title + if not self.title: # use only the first title self.title = self.accumulator def do_link(self, attrs): @@ -72,7 +77,9 @@ class HTMLParser(_HTMLParser): for attrname, value in attrs: if value: value = value.strip() - if (attrname == 'rel') and (value.lower() in ('icon', 'shortcut icon')): + if (attrname == 'rel') and ( + value.lower() in ('icon', 'shortcut icon') + ): has_icon = True elif attrname == 'href': href = value @@ -82,6 +89,8 @@ class HTMLParser(_HTMLParser): def parse_html(html_text, charset=None, log=None): + if not html_text: + return None parser = HTMLParser(charset) try: @@ -94,6 +103,7 @@ def parse_html(html_text, charset=None, log=None): except (HTMLParseError, HTMLHeadDone): pass - if (parser.title is None) and (parser.refresh is None) and (parser.icon is None): + if (parser.title is None) and (parser.refresh is None) \ + and (parser.icon is None): return None return parser