python开发_HTMLParser_html文档解析
2013-08-26 17:25
731 查看
''' 在HTMLParser类中,定义了很多的方法,但是很多方法都是没有实现的, 这需要我们继承HTMLParser类,自己去实现一些方法 如: # Overridable -- handle start tag def handle_starttag(self, tag, attrs): pass # Overridable -- handle end tag def handle_endtag(self, tag): pass # Overridable -- handle character reference def handle_charref(self, name): pass # Overridable -- handle entity reference def handle_entityref(self, name): pass # Overridable -- handle data def handle_data(self, data): pass # Overridable -- handle comment def handle_comment(self, data): pass # Overridable -- handle declaration def handle_decl(self, decl): pass # Overridable -- handle processing instruction def handle_pi(self, data): pass '''
下面是我做的demo
运行效果:
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ================================ RESTART ================================ >>> 开始读取文件:[c:\test\hongten.html] 源html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> Python Html module </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content="Hongten"> <meta name="Keywords" content="hongten,python"> <meta name="Description" content="this blogs is about python"> </head> <!-- this is comment--> <body> <table border = "1"> <tr> <td> Author </td> <td> Hongten </td> <td> Mail </td> <td> hongtenzone@foxmail.com </td> </tr> <tr> <td> Blog </td> <td> <a href="http://www.blogs.com/hongten">http://www.blogs.com/hongten</a> </td> <td> QQ </td> <td> 648719819 </td> </tr> </table> </body> </html> ################################################## 遇到声明:DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" 开始处理:DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" 遇到数据: 开始处理: 遇到起始标签:html 开始处理:html 遇到数据: 开始处理: 遇到起始标签:head 开始处理:head 遇到数据: 开始处理: 遇到起始标签:title 开始处理:title 遇到数据: Python Html module 开始处理: Python Html module 遇到结束标签:title 开始处理:title 遇到数据: 开始处理: 遇到起始标签:meta 开始处理:meta 遇到数据: 开始处理: 遇到起始标签:meta 开始处理:meta 遇到数据: 开始处理: 遇到起始标签:meta 开始处理:meta 遇到数据: 开始处理: 遇到起始标签:meta 开始处理:meta 遇到数据: 开始处理: 遇到结束标签:head 开始处理:head 遇到数据: 开始处理: 遇到注释: this is comment 开始处理: this is comment 遇到数据: 开始处理: 遇到起始标签:body 开始处理:body 遇到数据: 开始处理: 遇到起始标签:table 开始处理:table 遇到数据: 开始处理: 遇到起始标签:tr 开始处理:tr 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: Author 开始处理: Author 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: Hongten 开始处理: Hongten 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: Mail 开始处理: Mail 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: hongtenzone@foxmail.com 开始处理: hongtenzone@foxmail.com 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到结束标签:tr 开始处理:tr 遇到数据: 开始处理: 遇到起始标签:tr 开始处理:tr 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: Blog 开始处理: Blog 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:a 开始处理:a 遇到数据:http://www.blogs.com/hongten 开始处理:http://www.blogs.com/hongten 遇到结束标签:a 开始处理:a 遇到数据: 开始处理: 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: QQ 开始处理: QQ 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到起始标签:td 开始处理:td 遇到数据: 648719819 开始处理: 648719819 遇到结束标签:td 开始处理:td 遇到数据: 开始处理: 遇到结束标签:tr 开始处理:tr 遇到数据: 开始处理: 遇到结束标签:table 开始处理:table 遇到数据: 开始处理: 遇到结束标签:body 开始处理:body 遇到数据: 开始处理: 遇到结束标签:html 开始处理:html 遇到数据: 开始处理: >>>
HTMLParser会对html文档进行解析处理
=============================================
代码部分:
=============================================
#python html.parser #Author : Hongten #Mailto : hongtenzone@foxmail.com #Blog : http://www.cnblogs.com/hongten #QQ : 648719819 #Create : 2013-08-26 #Version : 1.0 import os from html.parser import HTMLParser ''' 在HTMLParser类中,定义了很多的方法,但是很多方法都是没有实现的, 这需要我们继承HTMLParser类,自己去实现一些方法 如: # Overridable -- handle start tag def handle_starttag(self, tag, attrs): pass # Overridable -- handle end tag def handle_endtag(self, tag): pass # Overridable -- handle character reference def handle_charref(self, name): pass # Overridable -- handle entity reference def handle_entityref(self, name): pass # Overridable -- handle data def handle_data(self, data): pass # Overridable -- handle comment def handle_comment(self, data): pass # Overridable -- handle declaration def handle_decl(self, decl): pass # Overridable -- handle processing instruction def handle_pi(self, data): pass ''' #global var HTML_FILE = '' HTML_STR = '' class MyHTMLParser(HTMLParser): ''' MyHTMLParser类继承HTMLParser类, 然后去实现HTMLParser的一些方法 ''' def handle_starttag(self, tag, attrs): print("遇到起始标签:{} 开始处理:{}".format(tag, tag)) def handle_endtag(self, tag): print("遇到结束标签:{} 开始处理:{}".format(tag, tag)) def handle_data(self, data): print("遇到数据:{} 开始处理:{}".format(data, data)) def handle_comment(self, data): print('遇到注释:{} 开始处理:{}'.format(data, data)) def handle_decl(self, decl): print('遇到声明:{} 开始处理:{}'.format(decl, decl)) def parser_test(html_str): '''解析html源文件''' parser = MyHTMLParser(strict = False) parser.feed(html_str) parser.close() def read_html_file(path): '''读取html文件源文件信息''' content = '' if os.path.exists(path): print('开始读取文件:[{}]'.format(path)) with open(path, 'r') as pf: for line in pf: content += line pf.close() return content else: print('the path [{}] dosen\'t exist!'.format(path)) return content def init(): #html源文件位置 global HTML_FILE HTML_FILE = 'c:\\test\\hongten.html' #html源文件的内容 global HTML_STR HTML_STR = read_html_file(HTML_FILE) def main(): init() print('源html:\n{}'.format(HTML_STR)) print('#' * 50) parser_test(HTML_STR) if __name__ == '__main__': main()
相关文章推荐
- [转载]python模块学习---HTMLParser(解析HTML文档元素)
- 【python】使用HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
- python模块学习---HTMLParser(解析HTML文档元素)
- python模块学习---HTMLParser(解析HTML文档元素)
- python模块学习---HTMLParser(解析HTML文档元素)
- python模块学习---HTMLParser(解析HTML文档元素)
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies .
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)(转)
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- python模块学习---HTMLParser(解析HTML文档元素)
- Python中使用HTMLParser解析HTML文档
- python 模块-使用HTMLParser 解析html
- python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
- python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
- python 解析html文档模块HTMLPaeser