爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 931404656

[源代码] Python爬探空数据

[复制链接]

新浪微博达人勋

发表于 2016-7-12 10:26:25 | 显示全部楼层
赞赞赞赞赞赞赞赞赞赞赞赞赞赞
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-12 11:09:37 | 显示全部楼层

python爬取高空数据贡献去掉了

python爬取高空数据贡献去掉了

up.py

2 KB, 阅读权限: 50, 下载次数: 37, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-13 16:46:21 | 显示全部楼层
之前也写过一个,顺手发上来贡献下
  1. # -*- coding: utf-8 -*-
  2. # 作者:MCS强
  3. # 功能:批量下载探空资料
  4. # 声明:本程序仅作下载数据之用,不对数据本身负责,所下载之数据用途需遵守原网站
  5. #       之约定,由此引发的一系列版权和法律问题,本程序作者一概不承担相关责任!
  6. # 依赖:本程序运行需安装Python,以及 Beautiful Soup 4 库

  7. import requests
  8. from datetime import datetime
  9. from bs4 import BeautifulSoup
  10. import calendar
  11. import os
  12. import time

  13. class sounding(object):
  14.     def __init__(self, year, month, dayhourfrom, dayhourto, stnm, region='seasia', format='TEXT%3ALIST'):
  15.         self.mainpage = 'http://weather.uwyo.edu/cgi-bin/sounding'
  16.         self.url = ('{mainpage}?region={region}&TYPE={type}&YEAR={year}'
  17.                     '&MONTH={month:0>2}&FROM={dayhourfrom}&TO={dayhourto}'
  18.                     '&STNM={stnm}').format(mainpage=self.mainpage, region=region,
  19.                                            type=format, year=year, month=month,
  20.                                            dayhourfrom=dayhourfrom,
  21.                                            dayhourto=dayhourto, stnm=stnm)
  22.         self.session = requests.Session()
  23.         self.UA = ("Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, "
  24.                    "like Gecko) Chrome/27.0.1453.116 Safari/537.36")
  25.         self.headers = {"User-Agent": self.UA, "Host": "http://weather.uwyo.edu/"}
  26.         html = self.session.get(self.url, headers=self.headers).text
  27.         self.soup = BeautifulSoup(html, "lxml")

  28.     def writer(self, path='E:\\SoundingData'):
  29.         results = [pre.text for pre in self.soup.find_all(['h2', 'pre'])]
  30.         h2 = results[0:-2:3]
  31.         sounds = results[1:-1:3]
  32.         dt = [datetime.strptime(i[-15:], '%HZ %d %b %Y').strftime('%Y-%m-%d_%HZ')
  33.               for i in h2]
  34.         for t, head, sound in zip(dt, h2, sounds):
  35.             with open(os.path.join(path, '{}.txt'.format(t)), 'w') as f:
  36.                 f.write(head)
  37.                 f.write(sound)


  38. if __name__ == '__main__':
  39.     # 最朴实的写法, 直接指定, writer中的path参数指定数据存放的路径,
  40.     # 如果不指定使用默认值E:\\SoundingData
  41.     sounding(year=2016, month=7, dayhourfrom='0100', dayhourto='0212', stnm=58238).writer()


  42.     # 以月为单位下载,循环一次就将一整个月数据下载好
  43.     # station = 58238  # 站点号
  44.     # years = [2016]  # 年份列表,多年写法 [2006, 2007, 2008, 2009] 或者 rane(2006, 2010)
  45.     # months = [7]  # 月份列表,多月写法 [1, 2, 3, 4, 5 , 6, 7, 8, 9, 10, 11, 12] 或者 range(1, 13)
  46.     # for year in years:
  47.     #     for month in months:
  48.     #         dayNums = calendar.monthrange(year, month)[1]
  49.     #         sounding(year=year, month=month, dayhourfrom='0100',
  50.     #                  dayhourto='{}12'.format(dayNums), stnm=station).writer()
复制代码



密码修改失败请联系微信:mofangbao
回复 支持 4 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2016-7-13 16:56:59 | 显示全部楼层
风子 发表于 2016-7-13 16:46
之前也写过一个,顺手发上来贡献下

强悍
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-1 13:12:24 | 显示全部楼层
谢谢楼主分享,非常需要
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-13 20:24:11 | 显示全部楼层
没有了吗?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-1-13 22:00:12 | 显示全部楼层
上面有哇嘿嘿
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-14 14:48:38 | 显示全部楼层
风子 发表于 2016-7-13 16:46
之前也写过一个,顺手发上来贡献下

下载了,感谢提供代码的两位老师。~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-30 14:00:12 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-7-1 19:17:41 | 显示全部楼层
挺不错的东西,有问题请教楼主
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表