1
#!/usr/bin/env python
2 from sgmllib import SGMLParser
3 s = """
4 <html>
5 <head>what's in</head>
6 <td> hello
7 <td> table1 blahblah </td>
8 <td> table </td>
9 </td>
10 ok the end blah
11 </html>
12 """
13 class Parse(SGMLParser):
14 def reset(self):
15 self.found_td = 0
16 SGMLParser.reset(self)
17 def start_td(self, attrs):
18 self.found_td += 1
19 def end_td(self):
20 self.found_td -= 1
21 def handle_data(self, text):
22 if self.found_td > 0:
23 print 'Data: %s' % text
24
25 p = Parse()
26 p.feed(s)
每个标签设一个标记,然后在handle_date里面判断读取
假如要处理<title>Hello world!</title>
碰到<title>的时候,title的标记由0变1;碰到数据的时候,验证title的标记的值,如果大于0则说明这是title的数据,可以提取出来;碰到</title>的时候,该标记由1变0,再碰到数据便可以识别出这不是title。