X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fparse_html_beautifulsoup.py;h=9b0faded06ab92cb951b844421555776690118ff;hb=4e86db886a2c446928438a038002b3084e7c0977;hp=5f010ad698e894e63d86515fa2a0111ad926da4d;hpb=4ad8953212582076957a8fe471d627528765dffa;p=bookmarks_db.git diff --git a/Robots/parse_html_beautifulsoup.py b/Robots/parse_html_beautifulsoup.py index 5f010ad..9b0fade 100644 --- a/Robots/parse_html_beautifulsoup.py +++ b/Robots/parse_html_beautifulsoup.py @@ -1,7 +1,7 @@ """ HTML Parser using BeautifulSoup - Written by BroytMann. Copyright (C) 2007 PhiloSoft Design + Written by BroytMann. Copyright (C) 2007, 2008 PhiloSoft Design """ import re @@ -55,21 +55,38 @@ def parse_html(filename, charset=None): root = BadDeclParser(infile, fromEncoding=charset) except TypeError: return None - infile.close() + finally: + infile.close() - _charset = root.originalEncoding try: - title = root.html.head.title.string.encode(_charset) + head = root.html.head except AttributeError: return None - meta = root.html.head.find(_find_refresh, recursive=False) + if head is None: + head = root.html # Some sites put TITLE in HTML without HEAD + + _charset = root.originalEncoding + try: + title = head.title.string.encode(_charset) + except AttributeError: + title = '' # HEAD but no TITLE + + if (not title) and (head is not root.html): + # Some sites put TITLE in HTML outside of HEAD + + try: + title = root.html.title.string.encode(_charset) + except AttributeError: + title = '' # no TITLE in HTML too + + meta = head.find(_find_refresh, recursive=False) if meta: refresh = meta.get("content") else: refresh = None - meta = root.html.head.find(_find_icon, recursive=False) + meta = head.find(_find_icon, recursive=False) if meta: icon = meta.get("href") else: