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中的分片与截断序列
Aug 09 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
python爬虫使用cookie登录详解
Dec 27 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
零基础学python应该从哪里入手
Aug 11 Python
python GUI计算器的实现
Oct 09 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 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 模板高级篇总结
2006/12/21 PHP
非常不错的MySQL优化的8条经验
2008/03/24 PHP
php实现jQuery扩展函数
2009/10/30 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
python如何实现视频转代码视频
2019/06/17 Python
详解python 中in 的 用法
2019/12/12 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
动态密码技术
2012/10/18 面试题
Servlet如何得到服务器的信息
2015/12/22 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
挂科检讨书范文
2014/02/20 职场文书
教研活动总结
2014/04/28 职场文书
部门年终奖分配方案
2014/05/07 职场文书
新教师岗前培训方案
2014/06/05 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang