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查看多台服务器进程的脚本分享
Jun 11 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
Python清空文件并替换内容的实例
Oct 22 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python 动态绘制爱心的示例
Sep 27 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 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中防止伪造跨站请求的小招式
2011/09/02 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
十大使用PHP框架的理由
2015/09/26 PHP
js查找父节点的简单方法
2008/06/28 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
深入分析Javascript跨域问题
2015/04/17 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
实例讲解python函数式编程
2014/06/09 Python
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python利用datetime模块计算时间差
2015/08/04 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python类如何定义私有变量
2020/02/03 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Python pip使用超时问题解决方案
2020/08/03 Python
一套比较完整的软件测试人员面试题
2012/05/13 面试题
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
怎样填写就业意向
2014/04/02 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
唐山大地震的观后感
2015/06/05 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL