Beautiful Soup 美丽的汤
大家别被这个标题给误会了,以为真的是什么美丽的汤,而且这个美丽来形容汤确实有那么一点怪异,呵呵
其实这里所要说的主角Beautiful Soup是程序里面的一个东东,是应用于Python语言的
是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。 对于Ruby,使用Rubyful Soup。
昨天晚上弄那个灾情的实时数据,从sina页面中提取出来,开始使用的是正则的方式,还不错
可是今天早晨过来一看,啥都没有,页面报错。。。再一看原始页面的源文件,发现已经更改了标签,我狂晕。。。
没办法,只得另外想办法了,有人说使用HtmlParser可以来解析,可是发现这个无法解析table标签,后来鳄鱼同学说可以使用Beautiful Soup,就是这个美丽的汤
以下是我的一段函数
def dizhen (request):
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen(”http://news.sina.com.cn/z/08earthquake/index.shtml”)
soup = BeautifulSoup(page,fromEncoding=’cp936′)
ff=[]
for incident in soup(’table’, cellspacing=”0″, style=”line-height:16px; margin-top:4px;”):
#print incident
ff.append(incident)
t = loader.get_template(’512.htm’)
c = RequestContext(request, {
‘tongji’:ff[0],
})
return HttpResponse(t.render(c))
只要在512.htm页面中增加tongji的标签,那段函数输出的结果是一个table,Django就可以将这个table添加到512.htm页面中了
需要注意的是fromEncoding=’cp936′,这里之所以用这个是因为编码的问题,我的页面是utf-8,而sina的这个压面是gb2312,所以这里使用cp936来代替gb2312,,要不然出现乱码 ^__^
终于大功告成,不过有个不好的地发,使用BeautifulSoup的话,速度会比采用正则慢不少,可能呢是因为
是分析整个html,而不是对某一个特定的html代码段用正则
本文地址 : http://www.foolpig.com/2008/05/15/beautifulsoup/
如果你对本文感兴趣,欢迎订阅我的博客


2008-07-29 2:10 pm
解决了
2008-07-29 7:11 pm
@yutouwanwan:
悄悄的问下,您啥东东解决了