爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 69781|回复: 34

[源代码] Python爬探空数据

[复制链接]

新浪微博达人勋

发表于 2016-6-25 14:34:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
爬探空数据脚本搜索
密码修改失败请联系微信: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-6-25 14:48:13 | 显示全部楼层
{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-6-26 08:44:29 | 显示全部楼层
强!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-6-30 10:20:03 | 显示全部楼层
厉害{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-7-1 08:43:08 | 显示全部楼层
不错,赞一个!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-1 09:24:43 | 显示全部楼层
这个不错,可以可以
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2016-7-2 07:52:41 | 显示全部楼层
是那个大学的数据,这个短时间连续爬会被封ip的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-2 08:43:39 | 显示全部楼层
mofangbao 发表于 2016-7-2 07:52
是那个大学的数据,这个短时间连续爬会被封ip的

老师能不能把贡献帮我去掉啊  人家都在说  https://rda.ucar.edu/这个网址一直进不去
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2016-7-4 18:35:37 | 显示全部楼层
931404656 发表于 2016-7-2 08:43
老师能不能把贡献帮我去掉啊  人家都在说  https://rda.ucar.edu/这个网址一直进不去

抱歉,手一抖不小心删掉附件了,你重新上传一下吧,麻烦啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-12 09:50:44 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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