学习
实践
活动
工具
TVP
写文章

Python对XML和HTML的解析

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解析出来。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180406G06Q8O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券