就在前几天,温度就下降的很厉害,出门不多穿衣服,被风吹的酸爽大家都体验过。小编不知道小伙伴们有没有看天气预报的习惯,没有的话可以从本期的代码开始,要不要自己做一个天气预报表呢~在开始做表之前,我们肯定要准备一些数据和操作工具的,下面就一起来做天气预报表吧。
1 构造URL列表
每个月份的历史天气数据是通过一个 Javascript 文件获取的。因此,我们需要构造带爬取数据的 URL 列表,再批量爬取数据。
# 构造2019全年的月份列表 months = [] for year in (2019,): for month in range(12): months.append("%d%02d"%(year, month+1)) todo_urls = [ "http://tianqi.2345.com/t/wea_history/js/"+month+"/58457_"+month+".js" for month in months ]
2 批量下载数据
使用 requests 库获取 js 文件中的数据,并存到 datas 变量中。
import requests datas = [] for url in todo_urls: r = requests.get(url, headers = headers) if r.status_code!=200: raise Exception() # 去除javascript前后的字符串,得到一个js格式的JSON data = r.text.lstrip("var weather_str=").rstrip(";") datas.append(data)
3 解析数据
我们从 js 文件获取的数据 json 格式存储的,需要使用 demjson 对数据进行解析。
# 解析所有月份的数据 all_datas = [] for data in datas: tqInfos = demjson.decode(data)["tqInfo"] all_datas.extend([x for x in tqInfos if len(x)>0])
4 将结果导入 csv 文件
import csv with open('./hangzhou_tianqi_2019.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) columns = list(all_datas[0].keys()) writer.writerow(columns) for data in all_datas: writer.writerow([data[column] for column in columns])
5 结果展示
没想到我们也可以用python爬虫来看天气预报吧,这可比很早之前我们守在电视机前等待要方便多了,而且操作有趣。更多Python学习推荐:起源地模板网教学中心。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!