Python HTMLParser中有关转义字符的Problem&Solution
此文仅仅是记录了一个real project中出现的problem和我的unofficial solution,for reference only.
HTMLParser在使用中出现的一个Problem
在Python爬虫等项目中我们常常会遇到从HTML文件中提取信息的场景,比较通用的方案是使用HTMLParser模块将HTML的标签与内容分离,进而解析内容。
在我的实际使用中,HTMLParser解析过程中会舍弃Unicode转义字符的中文Unicode(&#xxxxx),为此我不得不在HTMLParser处理HTML内容前事先使用HTMLParser().unescape()来将内容中的Unicode转换为UTF-8(without DOM),从而使中文能够被解析。
此尝试的方法又引发了一个更严重的BUG,在解析过程中,由于我对内容中的尖括号进行了提前转义,造成了标签混乱,影响了HTMLParser的解析,所以需要做一些改进。
Solution
在使用Unicode to UTF-8转义前应该逐行使用AngleBracketsDisplacement来替换'<'和 '>'
def AngleBracketsDisplacement(unsecure_str):
secure_str = unsecure_str.replace('<', 'LEFT_ANGELBRACEKET')
secure_str = secure_str.replace('>', 'RIGHT_ANGELBRACEKET')
return secure_str
在完成HTML标签解析后应该逐行使用AngleBracketsReduction来还原'<'和 '>'
def AngleBracketsReduction(secure_str):
unsecure_str = secure_str.replace('LEFT_ANGELBRACEKET', '<')
unsecure_str = unsecure_str.replace('RIGHT_ANGELBRACEKET', '>')
return unsecure_str
分类:
Python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
2014-01-18 日语五十音图快速记忆法