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实现Linux下守护进程的编写方法
Aug 22 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
详解python函数传参是传值还是传引用
Jan 16 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
python print出共轭复数的方法详解
Jun 25 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
Python手动或自动协程操作方法解析
Jun 22 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
Python中第三方库Faker的使用详解
Apr 02 Python
Python开发五子棋小游戏
May 02 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使用cookie保存登录用户名的方法
2015/01/26 PHP
php查询操作实现投票功能
2016/05/09 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
javascript动画浅析
2012/08/30 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
python矩阵转换为一维数组的实例
2018/06/05 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
为什么使用接口?
2014/08/13 面试题
shell程序中如何注释
2012/01/28 面试题
学生实习自我鉴定
2013/10/11 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
奠基仪式主持词
2014/03/20 职场文书
空气的环保标语
2014/06/12 职场文书
社区清明节活动总结
2014/07/04 职场文书
手术室护士个人总结
2015/02/13 职场文书
工作犯错保证书
2015/05/11 职场文书
公司员工手册范本
2015/05/14 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
早上好问候语大全
2015/11/10 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server