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应用程序在windows下不出现cmd窗口的办法
May 29 Python
用C++封装MySQL的API的教程
May 06 Python
Python Django使用forms来实现评论功能
Aug 17 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
PyTorch中反卷积的用法详解
Dec 30 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
python 简单的调用有道翻译
Nov 25 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
基于PyTorch中view的用法说明
Mar 03 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
destoon各类调用汇总
2014/06/20 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
Python set集合类型操作总结
2014/11/07 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python实现决策树
2017/12/21 Python
Python分支结构(switch)操作简介
2018/01/17 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python 实现两个线程交替执行
2020/05/02 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
影子教师研修方案
2014/06/14 职场文书
国际商务专业求职信
2014/07/15 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
营销计划书
2015/01/17 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
教你用python实现12306余票查询
2021/06/30 Python