XML模块
XML比JSON复杂,在web中应用也不多,不过也需要了解一下。
DOM和SAX
操作XML有两种方法: 和 。 会把整个 读入内存,解析为树,因此占用内存大,解析慢,优点是可以遍历树的节点。
是流模式,边读边解析,占用内存小,解析快。缺点是需要自己处理事件。正常情况下,优先考虑SAX,因为DOM实在太占内存。
用SAX解析XML,通常关心三个方法: , , 。比如:
会产生三个事件,在读 ,产生 事件,读 时,产生 事件,读 时,产生 事件。
需要注意的是读取一大段字符串时,CharacterDataHandler可能被多次调用,所以需要自己保存起来,在EndElementHandler里面再合并。
如果要生成XML,最简单也是最有效的方法就是拼接字符串。
HTMLParser模块
如果要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻、图片还是视频,那么第二步的解析HTML就需要使用到HTMLParser模块。
HTML本质上是XML的子集,但是HTML的语法没有XML那么严格,所以不能用标准的DOM或SAX来解析HTML。
feed()方法可以多次调用,也就是不一定一次把整个HTML放入。特殊字符有两种,一种是英文表示的 ,一种是数字表示的 ,这两种字符都可以通过Parser解析出来。
领取专属 10元无门槛券
私享最新 技术干货