python网页解析之SGMLParser
2013-02-19 17:30
405 查看
鄙人学python不久,老看语法甚是无聊,便想找了一个例子玩玩。看到一个网页图片抓取的例子,源代码见http://blog.csdn.net/ipursuei/article/details/8591297,亲测可用。
其中比较重要的一个环节便是对html的解析。
我搜了一下常用的python的网页解析有
1. SGMLParser
2. HTMLParser
3. BeautifulSoup
4. lxml
其中前三种较为常用。本例子中用的是SGMLParser,这里稍加说明。
sgmllib.py 包含一个重要的类:
SGMLParser。SGMLParser 将 HTML 分解成有用的片段,比如开始标记和结束标记。一旦它成功地分解出某个数据为一个有用的片段,它会根据所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化
SGMLParser 类,并且覆盖这些方法。
当SGMLParser遇到一个开始标签的时候,如<pre id="a">,那么它则调用start_xx方法(这里xx就是pre),同时把属性名字和属性值传到方法中,万一此方法不存在,那么调用unknown_starttag方法。
对于一个结束标签,执行的流程也是类似,首先找end_xx方法,找不到的话调用unknown_endtag方法。
SGMLParser在过字符串的时候还能处理其余六种情况。字符引用,如 ,调用handle_charref()方法,同时把160作为参数;实体引用,如©,调用handle_entityref()方法,其中copy作为参数;调用handle_comment()方法处理注释;处理指令,如<?...>,调用handle_pi()方法,这个我很少接触;处理声明,对于HTML来说主要是DOCTYPE,调用handle_decl()方法;最后是处理普通文本的handle_data()方法。
当我们调用feed()方法后,以上八类方法就会在过字符串的时候自动调用,最后我们调用close()方法结束。
SGMLParser中对输入的字符串实际上不作处理,整个类只是作为一个框架。我们使用的时候可以继承这个类,并重写这些方法实现自己的需求。
其中比较重要的一个环节便是对html的解析。
我搜了一下常用的python的网页解析有
1. SGMLParser
2. HTMLParser
3. BeautifulSoup
4. lxml
其中前三种较为常用。本例子中用的是SGMLParser,这里稍加说明。
sgmllib.py 包含一个重要的类:
SGMLParser。SGMLParser 将 HTML 分解成有用的片段,比如开始标记和结束标记。一旦它成功地分解出某个数据为一个有用的片段,它会根据所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化
SGMLParser 类,并且覆盖这些方法。
当SGMLParser遇到一个开始标签的时候,如<pre id="a">,那么它则调用start_xx方法(这里xx就是pre),同时把属性名字和属性值传到方法中,万一此方法不存在,那么调用unknown_starttag方法。
对于一个结束标签,执行的流程也是类似,首先找end_xx方法,找不到的话调用unknown_endtag方法。
SGMLParser在过字符串的时候还能处理其余六种情况。字符引用,如 ,调用handle_charref()方法,同时把160作为参数;实体引用,如©,调用handle_entityref()方法,其中copy作为参数;调用handle_comment()方法处理注释;处理指令,如<?...>,调用handle_pi()方法,这个我很少接触;处理声明,对于HTML来说主要是DOCTYPE,调用handle_decl()方法;最后是处理普通文本的handle_data()方法。
当我们调用feed()方法后,以上八类方法就会在过字符串的时候自动调用,最后我们调用close()方法结束。
SGMLParser中对输入的字符串实际上不作处理,整个类只是作为一个框架。我们使用的时候可以继承这个类,并重写这些方法实现自己的需求。
相关文章推荐
- 用python解析html[SGMLParser]
- HTMLParser解析网页,提取链接地址、标题名称,并插入数据库 分类: python 小练习 HTMLParser 2014-02-19 09:57 519人阅读 评论(0) 收藏
- 用python解析html[SGMLParser]
- 用python解析html--SGMLParser
- 用python解析html--SGMLParser
- 解析html的python库--SGMLParser
- 用python做网页抓取与解析入门笔记[zz]
- 利用Python抓取和解析网页(…
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
- Python_API_Structured Markup Processing Tools_sgmllib.SGMLParser.feed
- python模块之HTMLParser: 解析html,获取url
- python 中对配置文件的解析 ConfigParser & ConfigObj
- Python实战_2_第一周_第三节课程:真实世界中的网页解析
- Python写爬虫——抓取网页并解析HTML
- Python解析网页源代码中的115网盘链接实例
- Python3.7 爬虫(二)使用 Urllib2 与 BeautifulSoup4 抓取解析网页
- Python 解析配置模块之ConfigParser详解
- 利用Python抓取和解析网页
- python bs4解析网页时 bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to inst
- 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫