博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#小练习 SGMLParser练习 分类: HTMLParser ...
阅读量:5120 次
发布时间:2019-06-13

本文共 1429 字,大约阅读时间需要 4 分钟。

SGMLParser 将 HTML 分解成有用的片段, 比如开始标记和结束标记。一旦它成功地分解出某个数据为一个有用的片段,它会根据 所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化 SGML- Parser类,并且覆盖这些方法。

SGMLParser类里面包含了很多内部方法,开始读取html后,遇到相应的数据就会调用其对应的方法,最重要的方法有三个:

  • start_tagname(self, attrs)
  • end_tagname(self)
  • handle_data(self, text)
#coding:utf-8from sgmllib import SGMLParserclass 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 #进入

,设置getdata=True def end_p(self): self.getdata=False def handle_data(self,data): if self.flag and self.getdata:#获取

标签的数据 self.l.append(data) print data.decode("utf-8") def end_div(self): self.flag=Falseif __name__ == '__main__': the_page =''' test

title

感兴趣内容1

感兴趣内容2

……

感兴趣内容n

捣乱

兴趣

我是来捣乱的2
我是来捣乱的3

内容1

内容2

……

内容n

''' m=myhp() m.feed(the_page) m.close()

结果:

感兴趣内容1

感兴趣内容2
感兴趣内容n
内容1
内容2
内容n

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/think1988/p/4628018.html

你可能感兴趣的文章
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>