使用方法:terminal中输入
python weather.py http://www.weather.com.cn/weather/101010100.shtml
北京6天的天气数据 json格式
#coding=utf-8  
#weather.py  
import urllib  
import re  
import simplejson  
import sys  
if len(sys.argv) != 2:  
    print ‘please enter: python ‘ + sys.argv[0] + ‘  <url>‘  
    exit(0)   
url = sys.argv[1];  
def readurlPageContent(url):#获取页面的所有数据 逐行读取  
    webpage = urllib.urlopen(url);  
    line = webpage.readline();  
    data = ‘‘  
    while line:  
        data = data + line.strip(); #去除每行两边的的空格  
        line = webpage.readline();   
    return data  
def getDatabody(data):  
    reg = re.compile(r‘(<div class=\"weatherYubaoBox\">(?:(?!<div)(?!</div).)*</div>)‘);  
    matchs = reg.findall(data,re.I);  
    if len(matchs) > 0:  
        return matchs[0]  
    return None  
def getSixDayWeather(data):  
    regs = re.compile(r‘>((?:(?!<)(?!>)(?!var).)+)<‘);  
    datas = regs.findall(data)  
    if len(datas) > 12:  
        datas = datas[12:len(datas)-7];#提取其中的78项 即后面6天的天气数据 每天相关的信息有13个  
        return datas      
    return None  
  
data = readurlPageContent(url);  
match_data = getDatabody(data)  
if match_data == None :  
    print ‘get weather data fail‘  
    exit(0)  
weathers_data = getSixDayWeather(match_data)  
if weathers_data == None:  
    print ‘get six day info fail‘  
    exit(0)  
count = len(weathers_data);  
groups_item_count = count / 6;  
weathers = {};  
groups = [];  
start = 0  
for item in weathers_data :  
    if (start % groups_item_count) == 0:  
        groups = [];  
        weathers[(‘day‘+str(start/groups_item_count + 1))] = groups;  
    groups.append(item)  
    start = start + 1  
  
print simplejson.dumps(weathers, encoding=‘UTF-8‘, ensure_ascii=False)  
注:本文中使用了第三方JSON库simplejson,安装方法参考下面:
1.下载:http://pypi.python.org/pypi/simplejson/ ,文件为压缩文件
2.解压:可以直接右键:解压文件.例如:D:/simplejson
3.开始---运行---输入命令:cmd
4.进入到目录(如:D:/simplejson)
    cd D:/simplejson
5.运行安装文件:setup.py installpython解析中国天气网的天气数据
原文:http://www.jb51.net/article/48299.htm