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中装饰器的用法
Apr 27 Python
Python的标准模块包json详解
Mar 13 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
Python实现的求解最小公倍数算法示例
May 03 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
python修改txt文件中的某一项方法
Dec 29 Python
python实现多张图片拼接成大图
Jan 15 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
python实现控制COM口的示例
Jul 03 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
优秀中学生事迹材料
2014/01/31 职场文书
建设投标担保书
2014/05/13 职场文书
企业宣传语大全
2015/07/13 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
golang的文件创建及读写操作
2022/04/14 Golang