Python网络编程基础笔记-HTML解析与HTML构建

1.Python先解析HTML文件,再使用解析的结果生成HTML源文件# -*- coding: cp936 -*-
"""
再解析HTML文件,使用HTMLParser解析度结果重新生成HTML文件
这里没有处理comment
1.handle_starttag:遇到开始TAG时调用,...
2.handle_endtag:遇到结束TAG时调用,...
3.handle_data:处理一般字符
4.参数说明:
    tag:当前解析的TAG
    attrs:当前TAG的属性,以tuple的形式
    data:当前的TAG所对应的内容
这三个函数默认情况下什么都不做,需要在子类中重载
"""
from HTMLParser import HTMLParser
import sys
class TitleParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
    def handle_starttag(self,tag,attrs):
        # 如果遇到title>添加
        sys.stdout.write(" + tag + " ")
        # 将对应的属性添加上
        for attr in attrs:
            sys.stdout.write(attr)
        # 添加上>,此时一个TAG的开始部分完成
        sys.stdout.write(">")
    def handle_data(self,data):
        # 将数据追加
        sys.stdout.write(data)
    def handle_endtag(self,tag):
        # 如果遇到结束TAG,添加/和>
        sys.stdout.write(" + tag + ">")
fd = file("basictitle.html")
tp = TitleParser()
tp.feed(fd.read())
        
2.测试使用的HTML文件
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head>
meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
title>无标题文档/title>
/head>
body>
this is my text
/body>
/html>