HTMLParser介绍
来源:互联网 发布:java十进制转字中文 编辑:程序博客网 时间:2024/06/07 22:02
使用时需要新建一个继承自HTMLParser的类
一个完整的类块如下:
class MyHTMLParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) #需要实现以下方法(可选) #tag是html标签,attrs是(variable,value)的元组的列表 #处理开始结束标签,如<img /> def handle_startendtag(self,tag,attrs): pass #处理开始标签 def handle_starttag(self,tag,attrs): pass #处理结束标签,如</XX> def handle_endtag(self,tag): pass #处理特殊字符,以&#开头的,一般为内码表示的字符 def handle_charref(self,name): pass #处理一些特殊的字符,以&开头的 def handle_entityref(self,name): pass #处理数据,<XX>data<XX> def handle_data(self,data): pass #处理注释 def handle_comment(self,data): pass #处理以 <! 开头的 def handle_decl(): pass #处理形如<?instruction>的东西 def handle_pi(): pass
一些例子:
from html.parser import HTMLParser class MyHTMLParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.links = [] def handle_starttag(self, tag, attrs): #print "Encountered the beginning of a %s tag" % tag if tag == "a": if len(attrs) == 0: pass else: for (variable, value) in attrs: if variable == "href": self.links.append(value) if __name__ == "__main__": html_code = """ <a href="www.google.com"> google.com</a> <A Href="www.pythonclub.org"> PythonClub </a> <A HREF = "www.sina.com.cn"> Sina </a> """ hp = MyHTMLParser() hp.feed(html_code) hp.close() print(hp.links)
运行结果:[‘www.google.com’, ‘www.pythonclub.org’, ‘www.sina.com.cn’]
from html.parser import HTMLParser page ='''''<sada>啊啊啊</sada><a href="http://click.union.360buy.com/JdClick /?unionId=75" class="f1" style="padding-left:13px; padding-right:14px">京东商城</a></td><td><a href="http://www.letao.com /?source=hao123" class="f1">乐淘网上鞋城</a></td><td><a href="http://www.lashou.com/cl_today/w_3001" class="f2">拉手团购</a></td><td><a href="http://www.amazon.cn/?tag=2009hao123famousdaohang" class="f2">亚马逊</a></td><td><a href="http://www.vancl.com/?source=hao123mp" class="f1">凡客诚品</a></td><td><a href="http://reg.jiayuan.com/st/?id=3237&url=/st /main.php" class="f1">世纪佳缘''' class hp(HTMLParser): a_text = False def handle_starttag(self,tag,attr): if tag == 'a': self.a_text = True #print (dict(attr)) def handle_endtag(self,tag): if tag == 'a': self.a_text = False def handle_data(self,data): if self.a_text: print (data) yk = hp() yk.feed(page) yk.close()
运行结果:
京东商城
乐淘网上鞋城
拉手团购
亚马逊
凡客诚品
世纪佳缘
整理自:http://www.cnblogs.com/mfryf/p/3691563.html
后续将有自己的添加…
0 0
- HTMLParser介绍
- Htmlparser 中的各种Filter介绍
- HTMLParser
- HTMLParser
- htmlparser
- htmlparser
- htmlparser
- HTMLParser
- HTMLParser
- htmlparser
- HTMLParser
- HTMLParser
- htmlparser
- htmlparser
- HTMLParser
- HTMLParser
- HTMLParser 使用
- htmlparser使用指南
- Deep Learning笔记1
- 在一个js文件中引用另一js文件(chrome插件亦适用)
- 欢迎使用CSDN-markdown编辑器
- font-size属性的继承
- 从头到尾彻底理解傅里叶变换算法、上
- HTMLParser介绍
- Cube painting
- Rotate Array
- mtk6572 待机功耗从10MA降到2MA
- 读书笔记MoreEffectiveC++(28)
- (1182)POJ
- K - After Training CodeForces 195B-找规律
- 套接字IO模型(一) Select模型
- c++中的string常用函数用法总结