之前写过一个关于teacan的中国天气网天气爬取方法,采取的是单独的py文件定时执行天气爬取,然后面程序内调用数据。好像这种模块化的方法更好一些,但我觉得有两点忧虑,1、如果天气网把数据格式改了,则这个爬虫就用不了了,要改代码;2、代码比较长,读起来还是比较费力的,而且在另一个文件内,我感觉不太舒服。所以就改用从中华万年历下载数据进行解析,这个比较简单,代码也简单多了。而且下载和解析数据速度也比较快,PI0W基本不到一秒完成。下面把方法写出来供自己学习,也供给其他有需要的朋友使用。

1、中华万年历天气文件下载(json格式)。有如下两种:

http://wthrcdn.etouch.cn/weather_mini?city=深圳

通过城市名字获得天气数据

http://wthrcdn.etouch.cn/weather_mini?citykey=101070101

通过城市id获得天气数据

数据内容像下面这样


{"data":{"yesterday":{"date":"28日星期六","high":"高温 27℃","fx":"无持续风向","low":"低温 21℃","fl":"<![CDATA[<3级]]>","type":"多云"},"city":"深圳","forecast":[{"date":"29日星期天","high":"高温 23℃","fengli":"<![CDATA[<3级]]>","low":"低温 19℃","fengxiang":"无持续风向","type":"阴"},{"date":"30日星期一","high":"高温 26℃","fengli":"<![CDATA[<3级]]>","low":"低温 21℃","fengxiang":"无持续风向","type":">小雨"},{"date":"31日星期二","high":"高温 27℃","fengli":"<![CDATA[<3级]]>","low":"低温 23℃","fengxiang":"无持续风向","type":"雷阵雨"},{"date":"1日星期三","high":"高温 25℃","fengli":"<![CDATA[3-4级]]>","low":"低温 21℃","fengxiang":"东风","type":"阴"},{"date":"2日星期四","high":"高温 24℃","fengli":"<![CDATA[3-4级]]>","low":"低温 19℃","fengxiang":"东风","type":"阴"}],"ganmao":"虽然温度适宜但风力较大,
仍较易发生感冒,体质较弱的朋友请注意适当防护。","wendu":"21"},"status":1000,"desc":"OK"}

我感觉就是python的字典,数据提取按字典的方法就行了。

2、文件下载方法:

#文件下载地址
Download_addres='http://wthrcdn.etouch.cn/weather_mini?city=深圳'
#把下载地址发送给requests模块
f=requests.get(Download_addres)
#下载文件(原文保存)
with open("weather","wb") as code:code.write(f.content)

3、数据处理。

dataJson=json.load(open('weather',encoding='UTF-8'))#读取天气文件
#提取天气相关信息
date=dataJson['data']['forecast'][0]['date']#读取日期
tianqi=dataJson['data']['forecast'][0]['type']#读取天气
low=dataJson['data']['forecast'][0]['low']#读取最低气温
high=dataJson['data']['forecast'][0]['high']#读取最高气温
fengxiang=dataJson['data']['forecast'][0]['fengxiang']#读取风向
fengli=dataJson['data']['forecast'][0]['fengli']#读取风力
c='深圳:'+tianqi#城市天气给变量C
d='气温:'+low[3:-1]+'到'+high[3:-1]+'℃'#气温给变量d
e='风力:'+re.findall('.*CDATA\[(.*)]]',fengli)[0]#风力给变量e
f='风向:'+fengxiang#风向给变量f
print(c)#显示城市天气
print(d)#显示气温
print(e)#显示风力
print(f)#显示风向

完整代码:

import requests,json,re #需要这三个库
#文件下载地址
Download_addres='http://wthrcdn.etouch.cn/weather_mini?city=深圳'
#把下载地址发送给requests模块
f=requests.get(Download_addres)
#下载文件(原文保存)
with open("weather","wb") as code:code.write(f.content)
dataJson=json.load(open('weather',encoding='UTF-8'))#读取天气文件#提取天气相关信息
date=dataJson['data']['forecast'][0]['date']#读取日期
tianqi=dataJson['data']['forecast'][0]['type']#读取天气
low=dataJson['data']['forecast'][0]['low']#读取最低气温
high=dataJson['data']['forecast'][0]['high']#读取最高气温
fengxiang=dataJson['data']['forecast'][0]['fengxiang']#读取风向
fengli=dataJson['data']['forecast'][0]['fengli']#读取风力
c='深圳:'+tianqi#城市天气给变量C
d='气温:'+low[3:-1]+'-'+high[3:-1]+'℃'#气温给变量d
e='风力:'+re.findall('.*CDATA\[(.*)]]',fengli)[0]#风力给变量e
f='风向:'+fengxiang#风向给变量f
print(date)显示日期
print(c)#显示城市天气
print(d)#显示气温
print(e)#显示风力
print(f)#显示风向

程序运行需要3个库,re\json\requests,需安装完成后上面代码才可以跑完。

程序运行结果如下图:

API获取天气数据方法——中国天气网数据API下载及处理相关推荐

  1. java 使用Jsoup 爬取 中国政府采购网数据

    int isSize = 1; Integer pageSize = 0; Integer timeType = 4; // 时间类型 6: 指定时间 5:近半年 0:今日 4:近3月 public ...

  2. 2012年中国土地市场网数据(含经纬度)

    数据集名称:2012年中国土地市场网数据(含经纬度) 时间范围:2012年 相关说明:土地市场是土地在流通过程中发生的经济关系的总和.主体是土地买卖双方,客体是土地,主体之间的种种利益关系构成了市场. ...

  3. 未来24小时逐小时天气预报爬虫(数据来自中国天气网)/Java

    使用前先用maven导入HtmlUnit或者在HtmlUnit官网下载相关jar包支持 使用方法见主方法内,传入的ID数据见https://drive.google.com/file/d/0B9zkT ...

  4. qichacha/知乎/国家统计局最新4级地区划/百度地图API获取经纬度/Google play app评论等分数据爬取

    1.企查查数据抓取 1.1 关键公司LOGO # -*-coding:utf-8-*-import pandas as pd import requests import json import ra ...

  5. java 知网爬虫_怎样抓取中国知网数据

    2,快捷采集的使用方法:如何使用快捷采集 在中国知网通过高级检索,输入关键词后抓取相关文章的标题.作者.摘要.关键词等信息.但是中国知网在输入关键词搜索后网址并不会发生变化,所以在抓取的时候我们需要爬 ...

  6. php反射API 获取属性/注释/方法 执行方法 实例

    <?phpclass Person {/*** 这里是对$_allowDynamicAttributes的注释信息*/private $_allowDynamicAttributes = fal ...

  7. 阿里妈妈API 获取商品详情 全电商平台数据接口

    万邦阿里妈妈获得商品详情 API 返回值说明 item_get-获得商品详情  API test onebound.alimama.item_get 公共参数 请求地址: 跨境电商平台接口提供商 数据 ...

  8. 前嗅教你大数据:采集东方财富网数据

     l 采集场景 [场景描述]采集东方财富网行情中心沪深京A股数据. [使用工具]前嗅ForeSpider数据采集系统,免费下载: ForeSpider免费版本下载地址 l采集网站 [入口网址] htt ...

  9. api laravel 统一返回方法_你写的API接口代码真的烂,难道不能对返回格式统一处理一下吗?...

    随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大家各执其职,效率也非常的高,但是随着接口的增加,如果不统一的规范 ...

  10. 【大数据】中国省级大数据管理局

    当下各级政府正在如火如荼地推进的智慧城市建设,大数据无疑更是关键中的关键.然而,从各地智慧城市.数字政府建设的具体实践来看,最大痛点和瓶颈也正是数据的匮乏.各地大数据匮乏的核心症结在于各级部门未能充分 ...

最新文章

  1. python until怎么用不了_为何你还不懂得如何使用Python协程
  2. 阿里古谦:阿里互联网架构的6大最佳实践-博客-云栖社区-阿里云
  3. boost::type_erasure::add_assignable相关的测试程序
  4. TCP/IP的七层模型
  5. python爬取网易云音乐评论并进行可视化分析
  6. 前端学习(2228):react之状态三
  7. 关于kafka的几个问题
  8. Maven Jetty Plugin 配置指南(翻译)[转]
  9. sys.dm_db_wait_stats
  10. 2017 年全国大学生电子设计竞赛(本科组)题目√
  11. Mac 终端命令自动补齐的办法
  12. Java初级程序员面试总结(三)--Lock篇
  13. 激光光斑能量分布的matlab处理方法,激光光斑能量分布的MATLAB处理方法
  14. 特征提取 --- 文本特征抽取
  15. DDR3基本概念1 - 存储单元结构和原理
  16. kanban 看板视图
  17. [流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[1][修正版,增加了带宽测试包]
  18. 苹果手机计算机怎么放桌面,苹果手机iPhone装了App在桌面找不到图标的解决办法...
  19. 非暴力沟通简易思维导图
  20. Cortex-M3内核之CPU等级模式

热门文章

  1. 基于回声状态网络(ESN)的时间序列预测
  2. 提交application/x-www-form-urlencoded类型数据
  3. 51单片机学习笔记【五】——1602液晶屏
  4. 在Python中将图像转换为ASCII字符图
  5. Android开发,app多种语言包
  6. 数字逻辑电路——第四章 组合逻辑电路
  7. C语言每日一练——第66天:委派任务问题
  8. 高德离线地图开发API
  9. SF Symbols
  10. 74HC163与74HC161 同步和异步计数器仿真示例