#小练习 SGMLParser练习 分类: HTMLParser 2013-11-12 15:50 456人阅读 评论(0) 收藏
2013-11-12 15:50
609 查看
SGMLParser 将 HTML 分解成有用的片段, 比如开始标记和结束标记。一旦它成功地分解出某个数据为一个有用的片段,它会根据 所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化 SGML- Parser类,并且覆盖这些方法。
SGMLParser类里面包含了很多内部方法,开始读取html后,遇到相应的数据就会调用其对应的方法,最重要的方法有三个:
start_tagname(self, attrs)
end_tagname(self)
handle_data(self, text)
结果:
感兴趣内容1
感兴趣内容2
感兴趣内容n
内容1
内容2
内容n
SGMLParser类里面包含了很多内部方法,开始读取html后,遇到相应的数据就会调用其对应的方法,最重要的方法有三个:
start_tagname(self, attrs)
end_tagname(self)
handle_data(self, text)
#coding:utf-8 from sgmllib import SGMLParser class myhp(SGMLParser): def reset(self): self.l=[] self.getdata=False self.flag=False SGMLParser.reset(self) def start_div(self,attrs): for k,v in attrs: if k=='class' and v=='entry-content':#进入div,设置flag=True self.flag=True def start_p(self,attrs): self.getdata=True #进入<p>,设置getdata=True def end_p(self): self.getdata=False def handle_data(self,data): if self.flag and self.getdata:#获取<div><p>标签的数据 self.l.append(data) print data.decode("utf-8") def end_div(self): self.flag=False if __name__ == '__main__': the_page ='''<html> <head> <title>test</title> </head> <body> <h1>title</h1> <div class='entry-content'> <p>感兴趣内容1</p> <p>感兴趣内容2</p> …… <p>感兴趣内容n</p> <div class='entry-content'><div>捣乱</div><p>兴趣</p></div> <div class='entry-content'>我是来捣乱的2<div class= 'ooxx'>我是来捣乱的3</div></div> </div> <div class='entry-content'> <p>内容1</p> <p>内容2</p> …… <p>内容n</p> </div> </body> </html> ''' m=myhp() m.feed(the_page) m.close()
结果:
感兴趣内容1
感兴趣内容2
感兴趣内容n
内容1
内容2
内容n
相关文章推荐
- #小练习 使用SGMLParser获取url链接 分类: HTMLParser 2013-11-12 16:52 471人阅读 评论(0) 收藏
- SGMLParser 分类: HTMLParser 2013-11-12 15:25 1066人阅读 评论(1) 收藏
- #小练习 SGMLParser 解析 HTML 分类: HTMLParser 2013-11-12 15:52 472人阅读 评论(0) 收藏
- python:解析html(HTMLParser、SGMLParser) 分类: HTMLParser 2013-11-12 18:11 2302人阅读 评论(0) 收藏
- HTMLParser解析网页,提取链接地址、标题名称,并插入数据库 分类: python 小练习 HTMLParser 2014-02-19 09:57 519人阅读 评论(0) 收藏
- #小练习 使用字典保存HTMLParser解析的数据 分类: python 小练习 HTMLParser 2013-11-08 20:51 574人阅读 评论(0) 收藏
- #小练习 解析HTML文件并使用字典保存链接 分类: HTMLParser python 小练习 2013-11-11 12:06 267人阅读 评论(0) 收藏
- #小练习 HTMLParser 分类: python 小练习 python 2013-06-03 15:54 162人阅读 评论(0) 收藏
- #小练习 使用HTMLParser获取data时注意事项 分类: python 小练习 HTMLParser 2013-11-08 21:05 335人阅读 评论(0) 收藏
- SGMLParser (二) 分类: python 小练习 HTMLParser 2014-02-20 14:06 362人阅读 评论(0) 收藏
- 将两个列表元素组成字典 分类: python 小练习 2013-11-12 18:17 750人阅读 评论(0) 收藏
- 数字排序,波动增长 分类: python 小练习 2013-07-04 19:01 281人阅读 评论(0) 收藏
- #小练习 pickle模块 _ version3 分类: python Module 2013-09-05 18:13 269人阅读 评论(0) 收藏
- 图结构练习——最小生成树 分类: 最小生成树 图论 2015-06-09 17:00 13人阅读 评论(0) 收藏
- 判断元素出现的次数、总和 分类: python 小练习 2014-03-21 15:52 250人阅读 评论(0) 收藏
- #小练习 输出两个数的最大公约数 分类: python 小练习 2013-11-08 11:16 385人阅读 评论(0) 收藏
- 如何在Eclipse中查看Android API源码以及support包源码 分类: H1_ANDROID 2013-11-12 22:32 626人阅读 评论(0) 收藏
- 使用random模块,生成动态随机密码 分类: python 小练习 python Module 2013-12-04 17:23 278人阅读 评论(0) 收藏
- 使用正则表达式替换文件内容 分类: python 小练习 2013-08-13 15:07 332人阅读 评论(0) 收藏
- 使用locals()获得类,进行分发 分类: python 小练习 divide into python python基础学习 2014-02-21 14:51 217人阅读 评论(0) 收藏