LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3448|回复: 6

python怎样提取html特定标签的特定数据?

[复制链接]
发表于 2006-9-4 22:48:50 | 显示全部楼层 |阅读模式
比如我想提取一个html页面,其中所有被包含在<td>标签里面的数据?
发表于 2006-9-6 12:19:21 | 显示全部楼层
如果是字符级别的, 应该用 正则表达式, 不过我没用过Python所以无法详细说.
如果是DOM级别的, 使用DOM(XML)的Python绑定.
回复 支持 反对

使用道具 举报

发表于 2006-9-6 17:35:22 | 显示全部楼层
A dirty snippet:

  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. p = Parse()
  25. p.feed(s)
复制代码


For more info:
http://www.diveintopython.org/html_processing/index.html
回复 支持 反对

使用道具 举报

发表于 2006-9-6 20:50:54 | 显示全部楼层
使用HTMLParser吧,是SGMLParser的继承类,针对解析HTML的任务更方便直接一点,

这里有一个例子:
通过baidu下载mp3的脚本,Python版
http://www.bsdlife.org/wiki/inde ... C%8CPython%E7%89%88
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-7 00:21:10 | 显示全部楼层
:thank

明白了,原来要每个标签设一个标记,然后在handle_date里面判断读取。
回复 支持 反对

使用道具 举报

发表于 2007-9-1 11:14:42 | 显示全部楼层
Post by crquan
使用HTMLParser吧,是SGMLParser的继承类,针对解析HTML的任务更方便直接一点,


通过Baidu查到了这个1年前的帖子,因为正好在思考相关问题,所以把这个帖子顶出来,权当发新贴了

这位朋友说 HTMLParser 是对 SGMLParser 的继承类,呵呵,没有认真看源码吧?

以前的版本我不知道,我查看2.5版的代码发现 两个都基于 markupbase.Parserbase

并非继承关系,而是兄弟姐妹 :)

两个类实现的函数虽然大体思路相同,但确实还有不小的差别
回复 支持 反对

使用道具 举报

发表于 2007-9-24 13:41:53 | 显示全部楼层
三楼正解~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表