X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fparse_html.py;h=038cfaf7aa3b0e51be09518f001c9abbda240808;hb=3a680d85d6797a14cfed5e6df1d7b75ef1a516ee;hp=137ebfad9809d369712483bfa63b97744f7c6f1a;hpb=284b0935fc4237bda2e51229860c771f78887be2;p=bookmarks_db.git diff --git a/Robots/parse_html.py b/Robots/parse_html.py index 137ebfa..038cfaf 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,21 +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): - if part not in ("&", "<", ">", ""e;", " "): - 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):