python获取天气预报的脚本

手册/FAQ (473) 2015-10-28 10:11:25

这几天在看python网络编程基础,第6章和第7章介绍了获取web内容和解析html,自己找东西实践了一下

  1. #!/usr/bin/python 
  2. #conding:utf-8 
  3.  
  4. import sys,re,urllib2,datetime 
  5. from HTMLParser import HTMLParser 
  6.  
  7. class main(HTMLParser): 
  8.     def __init__(self): 
  9.         HTMLParser.__init__(self) 
  10.         self.tarsum = ['td','th','br'] 
  11.         self.readingtitle = 0 
  12.         self.curtag = None 
  13.         self.curattrs = 0 
  14.         self.marktag = None 
  15.         self.result = {} 
  16.         self.timeclock = 0 
  17.         for i in range(0,7): 
  18.             self.result[datetime.date.today() + datetime.timedelta(days=i)] = [] 
  19.  
  20.          
  21.     def handle_starttag(self,tag,attrs): 
  22.         self.curtag = tag 
  23.         self.curattrs = len(attrs) 
  24.         if tag == 'table' and len(attrs) == 7: 
  25.             self.readingtitle = 1 
  26.             self.marktag = tag 
  27.         if self.readingtitle == 1: 
  28.             if tag == 'tr': 
  29.                 self.timeclock = -2 
  30.             elif tag == 'td': 
  31.                 self.timeclock += 1 
  32.              
  33.                  
  34.                      
  35.     def handle_data(self,data): 
  36.         if self.curtag in self.tarsum and self.curattrs == 0 and self.readingtitle == 1: 
  37.             days =  datetime.date.today() + datetime.timedelta(days=self.timeclock) 
  38.             self.result[days].append(data.strip()) 
  39.              
  40.     def handle_endtag(self,tag): 
  41.         if tag == self.marktag: 
  42.             self.readingtitle = 0 
  43.              
  44.     def getvalue(self): 
  45.         return self.result 
  46.                      
  47. if __name__ == '__main__': 
  48.     url = urllib2.urlopen('http://qq.ip138.com/weather/guangdong/GuangZhou.htm') 
  49.     strhtml = url.read() 
  50.     strhtml = unicode(strhtml, 'gb2312','ignore').encode('utf-8','ignore') 
  51.     tp = main() 
  52.     tp.feed(strhtml) 
  53.     for key,value in tp.getvalue().items(): 
  54.         print key, 
  55.         for a in value: 
  56.             print a, 
  57.         print 

结果如下:

 

THE END