[Python] 从Sina上爬天气..

NGloom 发表于 2008-07-18 13:03:14

# -*- coding: gb2312 -*- #中文支持
import urllib2
from HTMLParser import HTMLParser
import re

class MyHTMLParser(HTMLParser):
    EXTRACT =  ["City_Data","Weather_TP","Weather_TP","Weather_SM"]#属于这些内容是进行提取
    def __init__(self):
        self.message = []   #提取的信息
        self.state = 0      #当前tag内的内容是否要提取
        self.time = 0          #网页上3个预报中提取第几个
        HTMLParser.__init__(self)
        #self.

    def handle_starttag(self,tag,attrs):#parser处于到一个tag的开始调用这个函数
        if attrs:
            attr = attrs[0]
            if tag == 'div':
                if attr[0] == "class" and attr[1] in MyHTMLParser.EXTRACT:
                    self.state = 1
                    if attr[1] == "City_Data":
                        self.time += 1

    def handle_endtag(self,tag):#parser处理到一个tag的结束调用这个函数
        if tag == "div":
            self.state = 0
        
    def handle_data(self,data):#parser处理到一个被tag对包着的数据调用这个函数
        if self.state == 1 and self.time == 1:
            if data and re.match("^\s\s*\s$",data) == None:# data不为None并且不是全部由空字符串组成
                self.message.append(data)
        pass

if __name__ == "__main__":
    url = urllib2.urlopen("http://php.weather.sina.com.cn/search.php?city=%C9%CF%BA%A3")#上海的天气页面
    content = url.read()
    content = re.subn("°C","℃",content)[0] #将显示的°C换成℃
    #print content
    parser = MyHTMLParser()
    parser.feed(content)
    parser.close()
    print "天气预报结果:"
    for i in parser.message:
        print parser.message.index(i),i

##############################################
#嗯,结果还是满意的,只是还是要根据网页的具体情况来写代码
#有通用点的吗?
关键词(Tag): weather python htmlparser


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论


  • rp
    2008-07-18 22:30:23 匿名 60.26.*.*

    太强了!

  • 2008-07-18 23:04:09

    .....
    这个不是你早就实现过了嘛
    有什么强的.
    只是最近还稍带着把html看了下,这下子不是html盲了^_^

  • 2008-07-26 21:30:48

    赞啊赞~~~~

    原来你也ycool啊,
    哈哈哈..

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定