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自动格式化json文件的方法
Mar 11 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
实例讲解Python爬取网页数据
Jul 08 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
python安装pil库方法及代码
Jun 25 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 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
thinkphp的c方法使用示例
2014/02/24 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
javascript document.images实例
2008/05/27 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
python实现redis三种cas事务操作
2017/12/19 Python
关于python字符串方法分类详解
2019/08/20 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
党员批评与自我批评
2014/02/12 职场文书
微信营销策划方案
2014/02/24 职场文书
甘南现象心得体会
2014/09/11 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
MySQL中order by的执行过程
2022/06/05 MySQL