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自动化工具日志查询分析脚本代码实现
Nov 26 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
python 从csv读数据到mysql的实例
Jun 21 Python
python覆盖写入,追加写入的实例
Jun 26 Python
简单了解django缓存方式及配置
Jul 19 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
Python requests模块cookie实例解析
Apr 14 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Pytest单元测试框架如何实现参数化
Sep 05 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
使用数据库保存session的方法
2006/10/09 PHP
php不写闭合标签的好处
2014/03/04 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python二叉树遍历的实现方法
2013/11/21 Python
Python实现批量下载图片的方法
2015/07/08 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
python程序变成软件的实操方法
2019/06/24 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
如何一键升级Python所有包
2020/11/05 Python
小学生自我评价范例
2013/09/24 职场文书
造型师求职自荐信
2013/09/27 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
公司综合部的成员自我评价分享
2013/11/05 职场文书
毕业求职自荐信格式是什么
2013/11/19 职场文书
项目经理的岗位职责
2013/11/23 职场文书
2015年党员自评材料
2014/12/17 职场文书
家属慰问信
2015/02/14 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
Python集合set()使用的方法详解
2022/03/18 Python
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA