python获取天气信息写入原有的excel文档

最近想统计对比全国各大城市的天气,先把他记录下来,于是通过python脚本来获取每天的天气信息。

注意首先要创建一个excel文档,并且包含一个sheet1工作薄。

代码如下:

#coding:utf-8

import xlrd
from xlutils.copy import copy
import time
import urllib2
import sys


date = time.strftime('%Y-%m-%d')
citys = ['北京','天津','石家庄','太原','西安','重庆','成都','贵阳','上海','苏州','杭州','南京','广州','深圳','厦门','武汉']

book = xlrd.open_workbook('城市天气.xls',formatting_info=True,encoding_override='utf-8')
workbook = copy(book)
sheet = book.sheet_by_name('sheet1')
worksheet = workbook.get_sheet(0);
col_id = sheet.col(0)
last_id = len(col_id)
	
for i in range(len(citys)):
	col_id = worksheet.col(0)
	url_aqi = 'http://www.baidu.com/s?ie=utf-8&bs=' + citys[i] + 'aqi&f=8&rsv_bp=1&rsv_spt=3&wd=' + citys[i] + 'aqi&inputT=0'
	url_tem = 'http://www.baidu.com/s?ie=utf-8&bs=' + citys[i] + '气温&f=8&rsv_bp=1&rsv_spt=3&wd=' + citys[i] + '气温&inputT=0'

	content_aqi = urllib2.urlopen(url_aqi).read()
	content_tem = urllib2.urlopen(url_tem).read()
	index_aqi_1 = content_aqi.find('class="op_pm25_graexp\">')
	index_aqi_2 = content_aqi.find('</span><span class=\"op_pm25_grade')
	index_tem_1 = content_tem.find('twoicon_temp\">')
	index_tem_2 = content_tem.find('<sup>℃</sup>')

	temperature = content_tem[index_tem_1 + 14:index_tem_2]
	aqi = content_aqi[index_aqi_1 + 23:index_aqi_2]
	print citys[i]+':','空气质量指数:' + aqi + '    温度:' + temperature + '     时间:' + date

	_id = last_id + i
	worksheet.write(last_id + i,0,_id)
	worksheet.write(last_id + i,1,citys[i].decode('utf-8'))
	worksheet.write(last_id + i,2,temperature)
	worksheet.write(last_id + i,3,aqi)
	worksheet.write(last_id + i,4,date)

	workbook.save('城市天气.xls')

print '\n'
print '获取成功.....'

运行结果如下:


注意以上代码再linux下运行时是正常的,在windows运行会出现编码错误,windows下代码修改为:

#coding:utf-8  
  
import xlrd  
from xlutils.copy import copy  
import time  
import urllib2  
import sys  
  
  
date = time.strftime('%Y-%m-%d')  
citys = ['北京','天津','石家庄','太原','西安','重庆','成都','贵阳','上海','苏州','杭州','南京','广州','深圳','厦门','武汉']  
fi = '城市天气.xls'.decode('UTF-8')
book = xlrd.open_workbook(fi,formatting_info=True)  
workbook = copy(book)  
sheet = book.sheet_by_name('sheet1')  
worksheet = workbook.get_sheet(0);  
col_id = sheet.col(0)  
last_id = len(col_id)  
      
for i in range(len(citys)):  
    col_id = worksheet.col(0)  
    url_aqi = 'http://www.baidu.com/s?ie=utf-8&bs=' + citys[i] + 'aqi&f=8&rsv_bp=1&rsv_spt=3&wd=' + citys[i] + 'aqi&inputT=0'  
    url_tem = 'http://www.baidu.com/s?ie=utf-8&bs=' + citys[i] + '气温&f=8&rsv_bp=1&rsv_spt=3&wd=' + citys[i] + '气温&inputT=0'  
  
    content_aqi = urllib2.urlopen(url_aqi).read()  
    content_tem = urllib2.urlopen(url_tem).read()  
    index_aqi_1 = content_aqi.find('class="op_pm25_graexp\">')  
    index_aqi_2 = content_aqi.find('</span><span class=\"op_pm25_grade')  
    index_tem_1 = content_tem.find('twoicon_temp\">')  
    index_tem_2 = content_tem.find('<sup>℃</sup>')  
  
    temperature = content_tem[index_tem_1 + 14:index_tem_2]  
    aqi = content_aqi[index_aqi_1 + 23:index_aqi_2]  
    print citys[i].decode('UTF-8')+':','空气质量指数:' + aqi + '    温度:' + temperature + '     时间:' + date  
  
    _id = last_id + i  
    worksheet.write(last_id + i,0,_id)  
    worksheet.write(last_id + i,1,citys[i].decode('utf-8'))  
    worksheet.write(last_id + i,2,temperature)  
    worksheet.write(last_id + i,3,aqi)  
    worksheet.write(last_id + i,4,date)  
  
    workbook.save('城市天气.xls'.decode('UTF-8'))  
  
print '\n'  
print '获取成功.....'.decode('UTF-8')


参考地址:

http://jingyan.baidu.com/article/5bbb5a1b3a6a1313eba1792b.html

http://jingyan.baidu.com/article/48b558e35d1ec47f38c09a2c.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值