问号问题的临时解决方案
由 cobra 于 周四, 2008-03-27 11:33 提交。使用ViVa提取网页正文并将结果保存在文件中,发现提取结果总是在每一个段落前发现奇怪的“????”,开始总以为是编码的问题,后来发现引起这个问题的原因居然是HTML中空格的转义 ,怀疑是ViVa使用的HTMLParser上,后来Forest发现使用其他的HTMLParser也会有这个问题。到底问题在哪里?其实这个问题很简单,先要看一下普通HTMLParser是如何处理HTML文档的。
HTML -> HTML Tag 补全 -> XML Parser
- HTMLParser处理HTML第一步要对HTML文档进行HTML补全,将HTML文档补全成XML的形式。
- 将补全的“xHTML”放到一个XML Parser中进行处理。
问题就处在了HTML转换成xHTML这一步上,HTML中空格字符的转义是 ,而xHTML中空格字符的转义为 ,使用在XML中使用 XMLParser将验证失败。这样在HTML到xHTML的转换中HTMLParser会将 转换成 ,处理完成便会将 转译成空格。至于为什么输出到文件空格为变成“?”,现在还在探究中...
目前的解决方案是将HTML文档在进入到HTMLParser前将&nsbp;过滤掉,但是由于ViVa的源代码遗失所以目前的方法是对ViVa处理后的结果进行escapeHtml操作,然后过滤掉 然后再unescapeHtml,再将结果保存在文件中。
最新评论
5 天 4 小时 前
1 周 1 小时 前
1 周 1 小时 前
1 周 1 天 前
1 周 1 天 前
4 周 4 天 前
1 年 11 周 前
1 年 11 周 前
1 年 49 周 前
1 年 51 周 前