python解析中国天气网的天气数据


Posted in Python onMarch 21, 2014

使用方法: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 install
Python 相关文章推荐
在Python中调用ggplot的三种方法
Apr 08 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
python+Splinter实现12306抢票功能
Sep 25 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python 实现return返回多个值
Nov 19 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
pip安装tensorflow的坑的解决
Apr 19 Python
python selenium xpath定位操作
Sep 01 Python
详解python的变量缓存机制
Jan 24 Python
python实现文件名批量替换和内容替换
Mar 20 #Python
Python读写Redis数据库操作示例
Mar 18 #Python
python实现k均值算法示例(k均值聚类算法)
Mar 16 #Python
python实现保存网页到本地示例
Mar 16 #Python
利用打码兔和超人打码自封装的打码类分享
Mar 16 #Python
Python使用代理抓取网站图片(多线程)
Mar 14 #Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 #Python
You might like
PHP入门
2006/10/09 PHP
第二节--PHP5 的对象模型
2006/11/16 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python实现的文件同步服务器实例
2015/06/02 Python
python爬虫的工作原理
2017/03/05 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
详解python中的index函数用法
2019/08/06 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
python mock测试的示例
2020/10/19 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
小学国庆节活动方案
2014/02/11 职场文书
2014年党务公开方案
2014/05/08 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
初中生活随笔
2015/08/15 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers