免费、稳定的天气预报API

1. 国家气象局

  1. 实时接口:
    实时天气1:http://www.weather.com.cn/data/sk/101190408.html
    实时天气2:http://www.weather.com.cn/data/cityinfo/101190408.html
    实时天气3(带时间戳):http://mobile.weather.com.cn/data/sk/101010100.html?_=1381891661455

  2. 一周天气预报接口
    7天预报数据 URL: http://mobile.weather.com.cn/data/forecast/101010100.html?_=1381891660081
    该接口来源气象局移动版网站,json数据格式如下:

{
    "c": {
        "c1": "101010100", 
        "c2": "beijing", 
        "c3": "北京", 
        "c4": "beijing", 
        "c5": "北京", 
        "c6": "beijing", 
        "c7": "北京", 
        "c8": "china", 
        "c9": "中国", 
        "c10": "1", 
        "c11": "010", 
        "c12": "100000", 
        "c13": "116.391", 
        "c14": "39.904", 
        "c15": "33", 
        "c16": "AZ9010", 
        "c17": "+8"
    }, 
    "f": {
        "f1": [
            {
                "fa": "01", 
                "fb": "03", 
                "fc": "10", 
                "fd": "5", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:21|17:40"
            }, 
            {
                "fa": "07", 
                "fb": "07", 
                "fc": "19", 
                "fd": "12", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:22|17:38"
            }, 
            {
                "fa": "02", 
                "fb": "00", 
                "fc": "15", 
                "fd": "5", 
                "fe": "8", 
                "ff": "8", 
                "fg": "3", 
                "fh": "1", 
                "fi": "06:23|17:37"
            }, 
            {
                "fa": "00", 
                "fb": "00", 
                "fc": "16", 
                "fd": "4", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:24|17:35"
            }, 
            {
                "fa": "00", 
                "fb": "00", 
                "fc": "18", 
                "fd": "7", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:25|17:34"
            }, 
            {
                "fa": "00", 
                "fb": "01", 
                "fc": "18", 
                "fd": "8", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:26|17:32"
            }, 
            {
                "fa": "01", 
                "fb": "01", 
                "fc": "16", 
                "fd": "6", 
                "fe": "0", 
                "ff": "0", 
                "fg": "0", 
                "fh": "0", 
                "fi": "06:27|17:31"
            }
        ], 
        "f0": "201310121100"
    }
}

详细接口分析如下:

//格式说明 
var format={"fa":图片1,"fb":图片2,"fc":温度1,fd:温度2,fe:风向1,ff:风向2,fg:风力1,fh:风力2,fi:日出日落}; 
//定义天气类型
var weatherArr={
    "10": "暴雨", 
    "11": "大暴雨", 
    "12": "特大暴雨", 
    "13": "阵雪", 
    "14": "小雪", 
    "15": "中雪", 
    "16": "大雪", 
    "17": "暴雪", 
    "18": "雾", 
    "19": "冻雨", 
    "20": "沙尘暴", 
    "21": "小到中雨", 
    "22": "中到大雨", 
    "23": "大到暴雨", 
    "24": "暴雨到大暴雨", 
    "25": "大暴雨到特大暴雨", 
    "26": "小到中雪", 
    "27": "中到大雪", 
    "28": "大到暴雪", 
    "29": "浮尘", 
    "30": "扬沙", 
    "31": "强沙尘暴", 
    "53": "霾", 
    "99": "", 
    "00": "晴", 
    "01": "多云", 
    "02": "阴", 
    "03": "阵雨", 
    "04": "雷阵雨", 
    "05": "雷阵雨伴有冰雹", 
    "06": "雨夹雪", 
    "07": "小雨", 
    "08": "中雨", 
    "09": "大雨"
}; 
//定义风向数组 
var fxArr={
    "0": "无持续风向", 
    "1": "东北风", 
    "2": "东风", 
    "3": "东南风", 
    "4": "南风", 
    "5": "西南风", 
    "6": "西风", 
    "7": "西北风", 
    "8": "北风", 
    "9": "旋转风"
};
//定义风力数组 
var flArr={
    "0": "微风", 
    "1": "3-4级", 
    "2": "4-5级", 
    "3": "5-6级", 
    "4": "6-7级", 
    "5": "7-8级", 
    "6": "8-9级", 
    "7": "9-10级", 
    "8": "10-11级", 
    "9": "11-12级"
};
  1. 获取全国所有城市代码列表
    方法一:XML接口根节点: http://flash.weather.com.cn/wmaps/xml/china.xmlXML接口主要作用是递归获取全国几千个县以上单位的城市代码,如:江苏的XML地址为:http://flash.weather.com.cn/wmaps/xml/shanghai.xml 苏州的XML地址为:http://flash.weather.com.cn/wmaps/xml/jiangsu.xml上面页面获得太仓city code:101190408合成太仓天气信息地址:http://m.weather.com.cn/data/101190408.html
    下面贴一段PHP代码实现的,通过XML接口根节点递归获得全国几千个县以上城市cide code的代码,供参考(可直接在终端下运行):
    方法二:一次性获取全国+国外主要城市,8763个城市列表信息。URL:http://mobile.weather.com.cn/js/citylist.xml

2. 中国天气SmartWeatherAPI(http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml)

  1. SmartWeatherAPI接口(简称”SWA”接口)是中国气象局面向网络媒体、手机厂商、第三方气象服务机构等用户,通过web方式提供数据气象服务的官方载体。该数据主要包括预警、实况、指数、常规预报(24小时)等数据内容。
  2. 接口文档:http://download.weather.com.cn/creative/SmartWeatherAPI_Lite_WebAPI_3.0.1.rar
  3. 使用须申请,详见官网http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml

3. 和风天气

  1. 数据主要包含:实时天气,3天内天气预报,生活指数,空气质量。
    访问流量:4000次/天。
    访问频率:200次/分钟。
  2. URL:https://free-api.heweather.com/v5/forecast?city=yourcity&key=yourkey
    city:城市名称,city可通过城市中英文名称、ID、IP和经纬度进行查询,经纬度查询格式为:经度,纬度。例:city=北京,city=beijing,city=CN101010100,city= 60.194.130.1
    key:用户认证key
  3. 注册页面:https://www.heweather.com/products
    接口文档:https://www.heweather.com/documents/api/v5

4. 心知天气(免费版只提供地级市数据)

  1. 包含数据:中国地级城市、天气实况、天气预报(3天)、生活指数(基础)。
    访问频率限制:400次/小时
  2. api详述:https://www.seniverse.com/doc
  3. 使用需注册。
    注册地址:https://www.seniverse.com/signup

5. 彩云天气

  1. 数据包含:实时天气数据(天气、温度、湿度、风向、网速、云量、降雨量、PM2.5、空气质量指数)。
  2. API详述:http://wiki.swarma.net/index.php/%E5%BD%A9%E4%BA%91%E5%A4%A9%E6%B0%94API/v2
    url示例:https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/121.6544,25.1552/realtime.json
    https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/121.6544,25.1552/realtime.jsonp?callback=MYCALLBACK
  3. 使用需注册
    产品详单:http://labs.swarma.net/api/caiyun_api_service_price.pdf
    注册页面:https://www.caiyunapp.com/dev_center/regist.html

6. 中央天气预报

  1. url:http://tj.nineton.cn/Heart/index/all
    参数如下:
      city:城市码
      language:固定值 zh-chs
      unit:温度单位固定值 c。可不填。也可省略该参数
      aqi:固定值 city。可不填。也可省略该参数
      alarm:固定值 1。可不填。也可省略该参数
      key:秘钥,固定值 78928e706123c1a8f1766f062bc8676b。可不填。也可省略该参数
    url 示例:http://tj.nineton.cn/Heart/index/all?city=CHSH000000&language=zh-chs&unit=c&aqi=city&alarm=1&key=78928e706123c1a8f1766f062bc8676bhttp://tj.nineton.cn/Heart/index/all?city=CHSH000000&language=&unit=&aqi=&alarm=&key=http://tj.nineton.cn/Heart/index/all?city=CHSH000000
    json 示例:
{
  "status": "OK",
  "weather": [
    {
      "city_name": "佛山",
      "city_id": "CHGD070000",
      "last_update": "2017-02-19T12:15:00+08:00",
      "now": {
        "text": "阴",
        "code": "9",
        "temperature": "21",
        "feels_like": "21",
        "wind_direction": "南",
        "wind_speed": "10.44",
        "wind_scale": "2",
        "humidity": "58",
        "visibility": "13.8",
        "pressure": "1014",
        "pressure_rising": "未知",
        "air_quality": {
          "city": {
            "aqi": "64",
            "pm25": "46",
            "pm10": "74",
            "so2": "9",
            "no2": "28",
            "co": "0.575",
            "o3": "108",
            "last_update": "2017-02-19T12:00:00+08:00",
            "quality": "良"
          },
          "stations": null
        }
      },
      "today": {
        "sunrise": "06:58 AM",
        "sunset": "6:27 PM",
        "suggestion": {
          "dressing": {
            "brief": "单衣类",
            "details": "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。"
          },
          "uv": {
            "brief": "最弱",
            "details": "属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"
          },
          "car_washing": {
            "brief": "不适宜",
            "details": "不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"
          },
          "travel": {
            "brief": "适宜",
            "details": "天气较好,温度适宜,总体来说还是好天气哦,这样的天气适宜旅游,您可以尽情地享受大自然的风光。"
          },
          "flu": {
            "brief": "易发期",
            "details": "相对今天出现了较大幅度降温,较易发生感冒,体质较弱的朋友请注意适当防护。"
          },
          "sport": {
            "brief": "比较适宜",
            "details": "阴天,较适宜进行各种户内外运动。"
          }
        }
      },
      "future": [
        {
          "date": "2017-02-19",
          "day": "周日",
          "text": "阴/小雨",
          "code1": "9",
          "code2": "13",
          "high": "24",
          "low": "18",
          "cop": "",
          "wind": "微风3级"
        },
        {
          "date": "2017-02-20",
          "day": "周一",
          "text": "阴",
          "code1": "9",
          "code2": "9",
          "high": "23",
          "low": "18",
          "cop": "",
          "wind": "微风3级"
        },
        {
          "date": "2017-02-21",
          "day": "周二",
          "text": "阵雨",
          "code1": "10",
          "code2": "10",
          "high": "22",
          "low": "18",
          "cop": "",
          "wind": "微风3级"
        },
        {
          "date": "2017-02-22",
          "day": "周三",
          "text": "小雨",
          "code1": "13",
          "code2": "13",
          "high": "23",
          "low": "13",
          "cop": "",
          "wind": "微风3级"
        },
        {
          "date": "2017-02-23",
          "day": "周四",
          "text": "小雨",
          "code1": "13",
          "code2": "13",
          "high": "20",
          "low": "10",
          "cop": "",
          "wind": "北风4级"
        },
        {
          "date": "2017-02-24",
          "day": "周五",
          "text": "小雨",
          "code1": "13",
          "code2": "13",
          "high": "14",
          "low": "10",
          "cop": "",
          "wind": "北风4级"
        },
        {
          "date": "2017-02-25",
          "day": "周六",
          "text": "小雨",
          "code1": "13",
          "code2": "13",
          "high": "15",
          "low": "10",
          "cop": "",
          "wind": "微风3级"
        },
        {
          "date": "2017-02-26",
          "day": "周日",
          "text": "小雨",
          "code1": "13",
          "code2": "13",
          "high": "15",
          "low": "10",
          "cop": "",
          "wind": "北风3级"
        },
        {
          "date": "2017-02-27",
          "day": "周一",
          "text": "小雨/多云",
          "code1": "13",
          "code2": "4",
          "high": "21",
          "low": "11",
          "cop": "",
          "wind": "北风3级"
        },
        {
          "date": "2017-02-28",
          "day": "周二",
          "text": "多云",
          "code1": "4",
          "code2": "4",
          "high": "24",
          "low": "14",
          "cop": "",
          "wind": "北风3级"
        }
      ]
    }
  ]
}

解析:

status:成功时返回 OK
    weather:天气信息
    city_name:城市名
    city_id:城市 id
    last_update:上次更新时间
    now:现在天气状况
        text:天气状况
        code:???
        temperature:温度
        feels_like:体感温度
        wind_direction:风向
        wind_speed:风速
        wind_scale:风力大小
        humidity:空气湿度
        visibility:能见度,单位为 km
        pressure:气压,单位为 hPa
        air_quality:具体空气质量指数
            aqi:空气质量指数
            pm25:pm2.5指数
            pm10:pm10指数
            so2:二氧化硫指数
            no2:二氧化氮指数
            co:一氧化碳指数
            o3:臭氧指数
            last_update:上次更新时间
            quality:空气质量
    today:今日天气状况
        sunrise:日出时间
        sunset:日落时间
        suggestion:建议列表
            dressing:穿衣信息
            uv:紫外线建议
            car_washing:洗车信息
            travel:旅游信息
            flu:流感信息
            sport:运动信息
                brief:建议、说明
                details:具体信息
    future:未来天气状况列表
        date:日期
        day:周几
        text:天气状况
        code1:???
        code2:???
        high:当日最高气温
        low:当日最低气温
        cop:???
        wind:风力信息
  1. 24小时天气预报
    url:http://tj.nineton.cn/Heart/index/future24h/
    拼接参数:
      city:城市
      language:语言
      key:秘钥,固定值 78928e706123c1a8f1766f062bc8676b。可不填。也可省略该参数

url 示例:http://tj.nineton.cn/Heart/index/future24h/?city=CHSH000000&language=zh-chs&key=36bdd59658111bc23ff2bf9aaf6e345c
http://tj.nineton.cn/Heart/index/future24h/?city=CHSH000000&language=&key=
http://tj.nineton.cn/Heart/index/future24h/?city=CHSH000000

json示例

{
  "status": "OK",
  "hourly": [
    {
      "text": "多云",
      "code": "4",
      "temperature": "16",
      "time": "2017-02-19T13:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "18",
      "time": "2017-02-19T14:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "17",
      "time": "2017-02-19T15:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "16",
      "time": "2017-02-19T16:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "16",
      "time": "2017-02-19T17:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "16",
      "time": "2017-02-19T18:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "15",
      "time": "2017-02-19T19:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "15",
      "time": "2017-02-19T20:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "15",
      "time": "2017-02-19T21:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "14",
      "time": "2017-02-19T22:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "14",
      "time": "2017-02-19T23:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "14",
      "time": "2017-02-20T00:00:00+08:00"
    },
    {
      "text": "多云",
      "code": "4",
      "temperature": "15",
      "time": "2017-02-20T01:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "15",
      "time": "2017-02-20T02:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "15",
      "time": "2017-02-20T03:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "15",
      "time": "2017-02-20T04:00:00+08:00"
    },
    {
      "text": "中雨",
      "code": "14",
      "temperature": "15",
      "time": "2017-02-20T05:00:00+08:00"
    },
    {
      "text": "中雨",
      "code": "14",
      "temperature": "13",
      "time": "2017-02-20T06:00:00+08:00"
    },
    {
      "text": "中雨",
      "code": "14",
      "temperature": "10",
      "time": "2017-02-20T07:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "8",
      "time": "2017-02-20T08:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "6",
      "time": "2017-02-20T09:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "5",
      "time": "2017-02-20T10:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "5",
      "time": "2017-02-20T11:00:00+08:00"
    },
    {
      "text": "小雨",
      "code": "13",
      "temperature": "6",
      "time": "2017-02-20T12:00:00+08:00"
    }
  ]
}

解析

status:成功时返回 OK
hourly:具体小时天气信息列表
    text:天气状况
    code:请参考 [code 细节]
    temperature:温度
    time:时间

另 ,code细节

/// 晴
case sunny = 0
/// 晴
case clear = 1
/// 晴
case fair1 = 2
/// 晴
case fair2 = 3

/// 多云
case cloudy = 4
/// 晴间多云
case partlyCloudy1 = 5
/// 晴间多云
case partlyCloudy2 = 6
/// 大部多云
case mostlyCloudy1 = 7
/// 大部多云
case mostlyCloudy2 = 8

/// 阴
case overcast = 9
/// 阵雨
case shower = 10
/// 雷阵雨
case thundershower = 11
/// 雷阵雨伴有冰雹
case thundershowerWithHail = 12
/// 小雨
case lightRain = 13
/// 中雨
case moderateRain = 14
/// 大雨
case heavyRain = 15
/// 暴雨
case storm = 16
/// 大暴雨
case heavyStorm = 17
/// 特大暴雨
case severeStorm = 18

/// 冻雨
case iceRain = 19
/// 雨夹雪
case sleet = 20
/// 阵雪
case snowFlurry = 21
/// 小雪
case lightSnow = 22
/// 中雪
case moderateSnow = 23
/// 大雪
case heavySnow = 24
/// 暴雪
case snowstorm = 25

/// 浮尘
case dust = 26
/// 扬沙
case sand = 27
/// 沙尘暴
case duststorm = 28
/// 强沙尘暴
case sandstorm = 29
/// 雾
case foggy = 30
/// 霾
case haze = 31
/// 风
case windy = 32
/// 大风
case blustery = 33
/// 飓风
case hurricane = 34
/// 热带风暴
case tropicalStorm = 35
/// 龙卷风
case tornado = 36

/// 冷
case cold = 37
/// 热
case hot = 38

/// 未知
case unknown = 99
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • 作者:笑楔信 来自简书 来自作者有道云笔记有道地址 一:小米天气预报接口: http://weatherapi.m...
    笑楔信阅读 12,604评论 5 8
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,506评论 25 707
  • 最近开始找工作,好几个朋友都在问我同一个问题:毕业后,要去哪里工作? 每个毕业生都会面对这个问题。说真的,我没有答...
    黃小書阅读 826评论 4 2
  • 家里有一个可爱的毛小孩,叫乐乐,一只比格犬,想在闲暇时记录一下我们全家的日常~︎*(๑ºั╰︎╯︎ºั๑)︎
    叶子小新L阅读 365评论 0 0
  • 自春生前往鹤壁之后,一家人处在莫名的兴奋之中,为他能学一门手艺而暗自窃喜。能让儿子走出大山,能让后代告别黄土地,凭...
    西岭布衣阅读 238评论 0 4