X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fparse_html.py;h=680ad5573a741bb99402449a77d969202e49abde;hb=e7035a2a59f6a2cb55aa7ca852e2cff3b66b59d9;hp=0d7b20b5ce82b88d596b1cb25aac90084a997735;hpb=3a4e6b782c229014a6cc49f1e68681696c1ed1f3;p=bookmarks_db.git diff --git a/Robots/parse_html.py b/Robots/parse_html.py index 0d7b20b..680ad55 100755 --- a/Robots/parse_html.py +++ b/Robots/parse_html.py @@ -24,7 +24,7 @@ parsers.append(parse_html) import re -from htmlentitydefs import entitydefs +from htmlentitydefs import name2codepoint entity_re = re.compile("(&\w+;)") num_entity_re = re.compile("(&#[0-9]+;)") @@ -32,20 +32,22 @@ num_entity_re = re.compile("(&#[0-9]+;)") def recode_entities(title, charset): output = [] for part in entity_re.split(title): - if entity_re.match(part): - part = entitydefs.get(part[1:-1], part) + if part not in ("&", "<", ">", ""e;", " ") and \ + entity_re.match(part): + part = unichr(name2codepoint.get(part[1:-1], part)).encode(charset) output.append(part) + title = ''.join(output) - output2 = [] - for part in num_entity_re.split(''.join(output)): + output = [] + for part in num_entity_re.split(title): if num_entity_re.match(part): try: part = unichr(int(part[2:-1])).encode(charset) except UnicodeEncodeError: pass # Leave the entity as is - output2.append(part) + output.append(part) - return ''.join(output2) + return ''.join(output) def parse_html(filename, charset=None, log=None):