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入门学习之字符串与比较运算符
Oct 12 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python框架django项目部署相关知识详解
Nov 04 Python
django中间键重定向实例方法
Nov 10 Python
pytorch之添加BN的实现
Jan 06 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
Python中的面向接口编程示例详解
Jan 17 Python
如何用python插入独创性声明
Mar 31 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 Python
python实现双向链表原理
May 25 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/07/17 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
js中将字符串转换成json的三种方式
2011/01/12 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
详解python 注释、变量、类型
2018/08/10 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
行政经理的岗位职责
2013/11/23 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
关于JavaScript轮播图的实现
2021/11/20 Javascript
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python