Yahoo!奇摩今日天氣截取 (Python)

Yahoo!奇摩今日天氣截取 (Python)

參考來源

# -*- coding: utf-8 -*- 
 
import urllib 
 
# 抓取Yahoo!奇摩天氣的網頁內容放到WebContent 
weatherWeb = urllib.urlopen("http://tw.weather.yahoo.com/today.html") 
webContent = weatherWeb.read().decode('utf_8') 
weatherWeb.close() 
 
import HTMLParser 
 
# 用來解析台中地區天氣資訊的解析器,繼承自HTMLParser 
class WeaterHTMLParser(HTMLParser.HTMLParser): 
     
    def handle_data(self, data): 
        """處理標籤以外的資料,也就是網頁中的文字""" 
 
        data = data.strip() 
 
        # 如果台中地區已出現過,就記錄天氣資訊 
        if hasattr(self, 'found') and data: 
            # 到了彰化地區,中止解析 
            if data == u'彰化地區': 
                self.stop = True 
                return 
            self.weather.append(data) 
 
        # 出現台中地區 
        # 設定旗標以通知後面幾次呼叫記下資訊 
        if data == u'台中地區': 
            self.found = True 
            self.weather = [] 
            self.weather.append(data) 
 
    def unknown_decl(self, data): 
        """Override unknown handle method to avoid exception""" 
        pass 
 
Parser = WeaterHTMLParser() 
 
try: 
    # 將網頁內容拆成一行一行餵給Parser 
    for line in webContent.splitlines(): 
        # 如果出現停止旗標,停止餵食資料,並且跳出迴圈 
        if hasattr(Parser, 'stop') and Parser.stop: 
            break 
        Parser.feed(line) 
except HTMLParser.HTMLParseError, data: 
    print "# Parser error : " + data.msg 
 
Parser.close() 
 
print u"%s 的今天氣是 %s,氣溫是 %s度%s,降雨機率是 %s" % tuple(Parser.weather) 
print "Press enter to continue." 
raw_input() 
 


如有錯誤 歡迎指正