最近想统计对比全国各大城市的天气,先把他记录下来,于是通过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